diff --git a/lib/modules/Tools.pmod/AutoDoc.pmod/PikeExtractor.pmod b/lib/modules/Tools.pmod/AutoDoc.pmod/PikeExtractor.pmod
index ad688903ee5d34f261621d9b3a062c11e07e6150..cd24e86836bc5d87e749d03112827992e6b59152 100644
--- a/lib/modules/Tools.pmod/AutoDoc.pmod/PikeExtractor.pmod
+++ b/lib/modules/Tools.pmod/AutoDoc.pmod/PikeExtractor.pmod
@@ -22,7 +22,7 @@ static private class Extractor {
   static private .PikeParser parser;
 
   static void create(string s, string filename) {
-    parser = .PikeParser();
+    parser = .PikeParser(0, filename);
 
     array(string) tokens;
     array(int) positions;
diff --git a/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike b/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike
index 20f7c0f68d47e190aeae4c337e6870a40b94e0e4..930acc89b08b54cbbb494551d973247661276e17 100644
--- a/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike
+++ b/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike
@@ -718,21 +718,23 @@ void setTokens(array(string) t, array(int) p) {
 // create(string, filename, firstline)
 // create(array(Token))
 static void create(string|void s,
-                   string|SourcePosition|void filename,
+                   string|SourcePosition|void _filename,
                    int|void line)
 {
   if (s) {
-    if (objectp(filename)) {
-      line = filename->firstline;
-      filename = filename->filename;
+    if (objectp(_filename)) {
+      line = _filename->firstline;
+      filename = _filename->filename;
     }
     if (!line)
       error("PikeParser::create() called without line arg.\n");
 
     [tokens, positions] = tokenize(s, filename, line);
   }
-  else
+  else {
     tokens = ({});
+    filename = _filename;
+  }
 #if TOKEN_DEBUG
   werror("PikeParser::create(), tokens = \n%O\n", tokens);
 #endif