Browse Source

fixed closure regression

Nicolas Cannasse 9 years ago
parent
commit
09eca08894
1 changed files with 3 additions and 9 deletions
  1. 3 9
      src/std/obj.c

+ 3 - 9
src/std/obj.c

@@ -443,17 +443,11 @@ static vdynamic *hl_obj_lookup_extra( vdynamic *d, int hfield ) {
 	switch( d->t->kind ) {
 	case HOBJ:
 		{
-			hl_runtime_obj *rt = d->t->obj->rt;
-			hl_field_lookup *f = NULL;
-			do {
-				f = hl_lookup_find(rt->lookup,rt->nlookup,hfield);
-				if( f != NULL ) break;
-				rt = rt->parent;
-			} while( rt );
+			hl_field_lookup *f = obj_resolve_field(d->t->obj,hfield);
 			if( f && f->field_index < 0 )
-				return (vdynamic*)hl_alloc_closure_ptr(f->t,rt->methods[-f->field_index-1],d);
+				return (vdynamic*)hl_alloc_closure_ptr(f->t,d->t->obj->rt->methods[-f->field_index-1],d);
 			if( f == NULL ) {
-				rt = d->t->obj->rt;
+				hl_runtime_obj *rt = d->t->obj->rt;
 				if( rt->getFieldFun )
 					return rt->getFieldFun(d,hfield);
 			}