[Places] fixes

This commit is contained in:
Kevin Tew 2010-10-22 21:47:58 -06:00
parent c1f2dea1ed
commit 9088b47a1d
2 changed files with 9 additions and 3 deletions

View File

@ -3276,6 +3276,7 @@ static Scheme_Double_Vector *alloc_shared_flvector(long size)
original_gc = GC_switch_to_master_gc();
vec = scheme_alloc_flvector(size);
SHARED_ALLOCATED_SET(vec);
GC_switch_back_from_master(original_gc);
return vec;
@ -3463,6 +3464,7 @@ static Scheme_Vector *alloc_shared_fxvector(long size)
original_gc = GC_switch_to_master_gc();
vec = scheme_alloc_fxvector(size);
SHARED_ALLOCATED_SET(vec);
GC_switch_back_from_master(original_gc);
return vec;

View File

@ -731,6 +731,9 @@ Scheme_Object *scheme_places_deep_copy_worker(Scheme_Object *so, Scheme_Hash_Tab
case scheme_place_bi_channel_type:
new_so = so;
break;
case scheme_place_type:
new_so = ((Scheme_Place *) so)->channel;
break;
case scheme_char_type:
new_so = scheme_make_char(SCHEME_CHAR_VAL(so));
break;
@ -746,10 +749,10 @@ Scheme_Object *scheme_places_deep_copy_worker(Scheme_Object *so, Scheme_Hash_Tab
}
break;
case scheme_float_type:
new_so = scheme_make_char(SCHEME_FLT_VAL(so));
new_so = scheme_make_float(SCHEME_FLT_VAL(so));
break;
case scheme_double_type:
new_so = scheme_make_char(SCHEME_DBL_VAL(so));
new_so = scheme_make_double(SCHEME_DBL_VAL(so));
break;
case scheme_complex_type:
{
@ -886,7 +889,8 @@ Scheme_Object *scheme_places_deep_copy_worker(Scheme_Object *so, Scheme_Hash_Tab
case scheme_resolved_module_path_type:
default:
scheme_log_abort("cannot copy object");
printf("places deep copy cannot copy object of type %hi at %p\n", so->type, so);
scheme_log_abort("places deep copy cannot copy object");
abort();
break;
}