diff --git a/src/stralloc.c b/src/stralloc.c
index 00d12008d492ebdfac0743fd05abaf31c1f64301..c61546d05b8b3d9e82fc655f89f49c39f5eed845 100644
--- a/src/stralloc.c
+++ b/src/stralloc.c
@@ -15,7 +15,7 @@
 
 #include <ctype.h>
 
-RCSID("$Id: stralloc.c,v 1.44 1998/10/14 22:18:18 hubbe Exp $");
+RCSID("$Id: stralloc.c,v 1.45 1998/10/15 02:34:37 grubba Exp $");
 
 #define BEGIN_HASH_SIZE 997
 #define MAX_AVG_LINK_LENGTH 3
@@ -91,8 +91,13 @@ static INLINE unsigned INT32 generic_extract (const void *str, int size, int pos
 INLINE unsigned INT32 index_shared_string(struct pike_string *s, int pos)
 {
 #ifdef DEBUG
-  if(pos > s->len || pos<0)
-    fatal("string index out of range!\n");
+  if(pos >= s->len || pos<0) {
+    if (s->len) {
+      fatal("String index %d is out of range [0 - %d]!\n", pos, s->len-1);
+    } else {
+      fatal("Attempt to index the empty string with %d!\n", pos);
+    }
+  }
 #endif
   return generic_extract(s->str,s->size_shift,pos);
 }