diff --git a/Parser/FunctionManager.cpp b/Parser/FunctionManager.cpp
index 2f980fc886f05991b4794a4d8bfe1c9bc8619eaa..835452a99c499a04ed12eec231810f4005507060 100644
--- a/Parser/FunctionManager.cpp
+++ b/Parser/FunctionManager.cpp
@@ -81,6 +81,8 @@ int FunctionManager::leaveFunction(gmshFILE * f, std::string &filename, int &lno
 int FunctionManager::createFunction(const std::string &name, gmshFILE f,
                                     const std::string &filename, int lno)
 {
+  if(functions->m.find(name) != functions->m.end())
+    return 0;
   File_Position fp;
   fp.file = f;
   fp.filename = filename;