107 |
size_t |
size_t |
108 |
scm_smob_free (SCM obj) |
scm_smob_free (SCM obj) |
109 |
{ |
{ |
110 |
scm_must_free ((char *) SCM_CELL_WORD_1 (obj)); |
long n = SCM_SMOBNUM (obj); |
111 |
return scm_smobs[SCM_SMOBNUM (obj)].size; |
if (scm_smobs[n].size > 0) |
112 |
|
scm_gc_free ((void *) SCM_CELL_WORD_1 (obj), |
113 |
|
scm_smobs[n].size, SCM_SMOBNAME (n)); |
114 |
|
return 0; |
115 |
} |
} |
116 |
|
|
117 |
/* {Print} |
/* {Print} |
460 |
long n = SCM_TC2SMOBNUM (tc); |
long n = SCM_TC2SMOBNUM (tc); |
461 |
size_t size = scm_smobs[n].size; |
size_t size = scm_smobs[n].size; |
462 |
scm_t_bits data = (size > 0 |
scm_t_bits data = (size > 0 |
463 |
? (scm_t_bits) scm_must_malloc (size, SCM_SMOBNAME (n)) |
? (scm_t_bits) scm_gc_malloc (size, SCM_SMOBNAME (n)) |
464 |
: 0); |
: 0); |
465 |
return scm_alloc_cell (tc, data); |
return scm_alloc_cell (tc, data); |
466 |
} |
} |