diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c
index 8389800c15212420729d39806a70742438405d47..532ccfc9df9ecd55f3d3b993562768e962d0b765 100644
--- a/pd/src/g_editor.c
+++ b/pd/src/g_editor.c
@@ -2311,9 +2311,13 @@ static void abstracthandler_callback(t_abstracthandler *x, t_symbol *s)
         /* check if there is a creator with the same name or if it's one of the built-in methods */
         t_symbol *sym = gensym(label);
         creator = (sym == &s_bang || sym == &s_float || sym == &s_symbol || sym == &s_blob
-                    || sym == &s_list || sym == &s_anything || zgetfn(&pd_objectmaker, sym));
-
-        if(!len && creator) { prefix = 1; creator = 0; }
+                    || sym == &s_list || sym == &s_anything);
+        if(!len && creator)
+        {
+            prefix = (!len && creator);
+            creator = 0;
+        }
+        creator = (creator || zgetfn(&pd_objectmaker, sym));
 
         /* check if there in an abstraction with the same name in the search path */
         if(!creator)
@@ -2336,7 +2340,7 @@ static void abstracthandler_callback(t_abstracthandler *x, t_symbol *s)
             strncat(label, filename, strlen(filename)-3);
         }
         else if(!flag)
-            post("warning: couldn't use relative path, there is a coincidence in the creator list or the search path");
+            error("warning: couldn't use relative path, there is a coincidence in the creator list or the search path");
     }
     if(!flag) /* absolute path is required */
     {