diff --git a/src/builtin_functions.c b/src/builtin_functions.c
index 72adecce3e413f3b918cc78a21440cad50dbc7c1..e4d61476aa742fab38818634fe3f29fe709c15ca 100644
--- a/src/builtin_functions.c
+++ b/src/builtin_functions.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: builtin_functions.c,v 1.409 2001/10/28 18:04:06 nilsson Exp $");
+RCSID("$Id: builtin_functions.c,v 1.410 2001/10/30 10:50:44 grubba Exp $");
 #include "interpret.h"
 #include "svalue.h"
 #include "pike_macros.h"
@@ -597,9 +597,12 @@ PMOD_EXPORT void f_search(INT32 args)
 		    "length of the string.\n");
 
     if(Pike_sp[1-args].type == T_STRING) {
-      start = string_search(haystack,
-			    Pike_sp[1-args].u.string,
-			    start);
+      /* Handle searching for the empty string. */
+      if (Pike_sp[1-args].u.string->len) {
+	start = string_search(haystack,
+			      Pike_sp[1-args].u.string,
+			      start);
+      }
     } else if (Pike_sp[1-args].type == T_INT) {
       INT_TYPE val = Pike_sp[1-args].u.integer;