diff --git a/lib/master.pike.in b/lib/master.pike.in
index d8952eb704ceeaeab9ba98ddddd543d522285bb9..9c59103e5ed0e01033721a23592e092f1a08e21b 100644
--- a/lib/master.pike.in
+++ b/lib/master.pike.in
@@ -1,6 +1,6 @@
 /* -*- Pike -*-
  *	
- * $Id: master.pike.in,v 1.97 2000/02/04 11:27:21 grubba Exp $
+ * $Id: master.pike.in,v 1.98 2000/02/04 16:35:46 grubba Exp $
  * 
  * Master-file for Pike.
  *
@@ -611,18 +611,21 @@ class dirnode
     if( !files )
       files = get_dir(dirname);
     foreach(files, string fname) {
-      catch {
+      mixed err = catch {
 	if (((< ".pike", ".pmod" >)[fname[sizeof(fname)-5..]]) &&
 	    !zero_type(`[](fname[..sizeof(fname)-6]))) {
 	  continue;
-	}
-      };
-      catch {
-	if ((fname[sizeof(fname)-3..] == ".so") &&
+	} else if ((fname[sizeof(fname)-3..] == ".so") &&
 	    !zero_type(`[](fname[..sizeof(fname)-4]))) {
 	  continue;
 	}
       };
+      if (err) {
+	compile_warning(dirname+"."+fname, 0,
+			sprintf("Compilation failed:\n"
+				"%s\n",
+				describe_backtrace(err)));
+      }
     }
     _cache_full = 1;
   }