diff --git a/src/interpret.c b/src/interpret.c index 0dc50761cd286a432ab3709f7ce1c6d8e6e1f43a..98298d287472b6a231040a1511a34fbd3cae784b 100644 --- a/src/interpret.c +++ b/src/interpret.c @@ -358,14 +358,15 @@ PMOD_EXPORT void init_interpreter(void) * lvalue array: { T_ARRAY_LVALUE, array with lvalue pairs } */ -void lvalue_to_svalue_no_free(struct svalue *to,struct svalue *lval) +int lvalue_to_svalue_no_free(struct svalue *to, struct svalue *lval) { + int run_time_type; #ifdef PIKE_SECURITY if(TYPEOF(*lval) <= MAX_COMPLEX) if(!CHECK_DATA_SECURITY(lval->u.array, SECURITY_BIT_INDEX)) Pike_error("Index permission denied.\n"); #endif - switch(TYPEOF(*lval)) + switch(run_time_type = TYPEOF(*lval)) { case T_ARRAY_LVALUE: { @@ -421,6 +422,7 @@ void lvalue_to_svalue_no_free(struct svalue *to,struct svalue *lval) else index_error(0,0,0,lval,lval+1,"Indexing a basic type.\n"); } + return run_time_type; } PMOD_EXPORT void assign_lvalue(struct svalue *lval,struct svalue *from) diff --git a/src/interpret.h b/src/interpret.h index 8c9455170e26033ae3bad874597cafdf25b13881..1709c3789275149cbc46096594ab830eba494c68 100644 --- a/src/interpret.h +++ b/src/interpret.h @@ -745,7 +745,7 @@ void gc_mark_stack_external (struct pike_frame *frame, struct svalue *stack_p, struct svalue *stack); PMOD_EXPORT int low_init_interpreter(struct Pike_interpreter_struct *interpreter); PMOD_EXPORT void init_interpreter(void); -void lvalue_to_svalue_no_free(struct svalue *to,struct svalue *lval); +int lvalue_to_svalue_no_free(struct svalue *to, struct svalue *lval); PMOD_EXPORT void assign_lvalue(struct svalue *lval,struct svalue *from); PMOD_EXPORT union anything *get_pointer_if_this_type(struct svalue *lval, TYPE_T t); void print_return_value(void);