From e5962efe1fc0ff6aba5284cffe5d434ebb6a3a97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Sun, 8 Feb 2015 19:58:48 +0100 Subject: [PATCH] Interpreter: lvalue_to_svalue_no_free() now returns the type of lvalue. --- src/interpret.c | 6 ++++-- src/interpret.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/interpret.c b/src/interpret.c index 0dc50761cd..98298d2874 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 8c9455170e..1709c37892 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); -- GitLab