AddSpecialInfo: Fehler wenn lfun nicht-existient

Bislang wurde der Aufruf bei nicht existenten oder
privaten lfuns stillschweigend ignoriert. Das ist
eine Fehlerquelle bei Typos im Funktionsnamen oder
entfernten Funktionen. Daher wird ab jetzt ein
Fehler ausgeloest, wenn die Funktion nicht
gefunden werden kann.

Change-Id: I71d2d0101ac8b7f148656867b4484dc80a7af13e
diff --git a/std/npc/info.c b/std/npc/info.c
index 63e768a..6b868f0 100644
--- a/std/npc/info.c
+++ b/std/npc/info.c
@@ -320,30 +320,27 @@
 public varargs void AddSpecialInfo(string|string* key, string functionname,
                string indent, int|string silent, string|closure casebased)
 {
-  // Externe Aufrufer durfen keine Closures auf static oder protected lfuns
-  // erstellen.
+  closure cl = symbol_function(functionname,this_object());
+  if (!cl)
+  {
+      raise_error(sprintf(
+          "%s existiert nicht oder ist private.\n", functionname));
+  }
+
+  // Funktion existiert, aber externe Aufrufer durfen keine Closures auf
+  // static oder protected lfuns erstellen.
   if (extern_call())
   {
       <string|int>* fexist = function_exists(functionname,
                                              FEXISTS_ALL|NAME_HIDDEN);
-      // Gar nicht existierende/gefundene lfuns fuehren auch in diesem Fall
-      // weiter unten zum stillschweigenden return ohne Fehler, um das
-      // Verhalten konsistent bei internem wie externem Aufruf zu halten.
-      //TODO: Allerdings halte ich in beiden Faellen einen Fehler fuer das
-      //TODO::bessere Verhalten.
-      if (fexist
-          && (fexist[FEXISTS_FLAGS] & (TYPE_MOD_STATIC|TYPE_MOD_PROTECTED)))
+      if (fexist[FEXISTS_FLAGS] & (TYPE_MOD_STATIC|TYPE_MOD_PROTECTED) )
       {
           raise_error(sprintf(
-                "%s ist static oder protected und darf nicht durch"
-                "externe Aufrufer eingetragen werden.\n",
-                functionname));
+                "%s ist static oder protected und darf nicht durch "
+                "externe Aufrufer eingetragen werden.\n", functionname));
       }
   }
-  closure cl = symbol_function(functionname,this_object());
 
-  if (!cl)
-    return;
   return AddInfo(key, cl, indent, silent, casebased);
 }