From c2998abdd1d4c4427222e1783a54f1608a1a28ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Mon, 8 Nov 1999 00:09:26 +0100 Subject: [PATCH] Fixed fatal error in search(). Rev: src/builtin_functions.c:1.202 --- src/builtin_functions.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/builtin_functions.c b/src/builtin_functions.c index 62e3abc370..ab2b1390c8 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.201 1999/11/04 17:21:42 grubba Exp $"); +RCSID("$Id: builtin_functions.c,v 1.202 1999/11/07 23:09:26 grubba Exp $"); #include "interpret.h" #include "svalue.h" #include "pike_macros.h" @@ -429,6 +429,10 @@ void f_search(INT32 args) SIMPLE_BAD_ARG_ERROR("search", 3, "int"); start=sp[2-args].u.integer; + if(start<0) { + bad_arg_error("search", sp-args, args, 3, "int(0..)", sp+2-args, + "Start must be greater or equal to zero.\n"); + } } start=array_search(sp[-args].u.array,sp+1-args,start); pop_n_elems(args); @@ -436,10 +440,11 @@ void f_search(INT32 args) break; case T_MAPPING: - if(args > 2) + if(args > 2) { mapping_search_no_free(sp,sp[-args].u.mapping,sp+1-args,sp+2-args); - else + } else { mapping_search_no_free(sp,sp[-args].u.mapping,sp+1-args,0); + } free_svalue(sp-args); sp[-args]=*sp; dmalloc_touch_svalue(sp); -- GitLab