diff --git a/src/builtin_functions.c b/src/builtin_functions.c
index ec4013832009222dbfad0f1799c2cf7415463391..7ade4b1ea04327bd323118c4cd14bbc3a561251c 100644
--- a/src/builtin_functions.c
+++ b/src/builtin_functions.c
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: builtin_functions.c,v 1.671 2008/06/16 21:46:35 mast Exp $
+|| $Id: builtin_functions.c,v 1.672 2008/06/18 09:35:13 grubba Exp $
 */
 
 #include "global.h"
@@ -9133,10 +9133,12 @@ void init_builtin_efuns(void)
 
 /* function(string|array:int*)|function(mapping(1=mixed:mixed)|multiset(1=mixed):array(1))|function(object|program:string*) */
   ADD_EFUN2("indices",f_indices,
-	   tOr3(tFunc(tOr(tStr,tArray),tArr(tInt)),
-		tFunc(tOr(tMap(tSetvar(1,tMix),tMix),tSet(tSetvar(1,tMix))),
-		      tArr(tVar(1))),
-		tFunc(tOr(tObj,tPrg(tObj)),tArr(tStr))),
+	    tOr3(tFunc(tArray,tArr(tIntPos)),
+		 tFunc(tOr3(tMap(tSetvar(1,tMix),tMix),
+			    tSet(tSetvar(1,tMix)),
+			    tNStr(tSetvar(1,tMix))),
+		       tArr(tVar(1))),
+		 tFunc(tOr(tObj,tPrg(tObj)),tArr(tStr))),
 	    OPT_TRY_OPTIMIZE,fix_indices_type,0);
 
   ADD_EFUN("undefinedp", f_undefinedp, tFunc(tMix,tInt01), OPT_TRY_OPTIMIZE);