diff --git a/src/mapping.c b/src/mapping.c index dcf35696db2124ef1a031e2a3fa935926518a4ac..07c35c8273c367b090f2883f8402be38d92aabca 100644 --- a/src/mapping.c +++ b/src/mapping.c @@ -1876,6 +1876,8 @@ void o_append_mapping( INT32 args ) { struct svalue *lval = Pike_sp - args; struct svalue *val = lval + 2; + int lvalue_type; + #ifdef PIKE_DEBUG if (args < 3) { Pike_fatal("Too few arguments to o_append_mapping(): %d\n", args); @@ -1883,10 +1885,9 @@ void o_append_mapping( INT32 args ) #endif args -= 3; /* Note: val should always be a zero here! */ - lvalue_to_svalue_no_free(val, lval); + lvalue_type = lvalue_to_svalue_no_free(val, lval); - if (TYPEOF(*val) == T_MAPPING) - { + if ((TYPEOF(*val) == T_MAPPING) && (lvalue_type != PIKE_T_GET_SET)) { struct mapping *m = val->u.mapping; if( m->refs == 2 ) {