return NULL;
lg = SMALL_OBJ(lb) ? GC_size_map[lb] : BYTES_TO_GRANULES(GC_size(op));
if (descr_type == LEAF) {
- /* Set up the descriptor inside the object itself. */
- volatile struct LeafDescriptor * lp =
- (struct LeafDescriptor *)
- (op + GRANULES_TO_WORDS(lg)
- - (BYTES_TO_WORDS(sizeof(struct LeafDescriptor)) + 1));
-
- lp -> ld_tag = LEAF_TAG;
- lp -> ld_size = leaf.ld_size;
- lp -> ld_nelements = leaf.ld_nelements;
- lp -> ld_descriptor = leaf.ld_descriptor;
- ((volatile word *)op)[GRANULES_TO_WORDS(lg) - 1] = (word)lp;
- } else {
-# ifndef GC_NO_FINALIZATION
- size_t lw = GRANULES_TO_WORDS(lg);
+ /* Set up the descriptor inside the object itself. */
+ volatile struct LeafDescriptor * lp =
+ (struct LeafDescriptor *)
+ (op + GRANULES_TO_WORDS(lg)
+ - (BYTES_TO_WORDS(sizeof(struct LeafDescriptor)) + 1));
+
+ lp -> ld_tag = LEAF_TAG;
+ lp -> ld_size = leaf.ld_size;
+ lp -> ld_nelements = leaf.ld_nelements;
+ lp -> ld_descriptor = leaf.ld_descriptor;
+ ((volatile word *)op)[GRANULES_TO_WORDS(lg) - 1] = (word)lp;
+ } else {
+# ifndef GC_NO_FINALIZATION
+ size_t lw = GRANULES_TO_WORDS(lg);
- op[lw - 1] = (word)complex_descr;
- /* Make sure the descriptor is cleared once there is any danger */
- /* it may have been collected. */
- if (EXPECT(GC_general_register_disappearing_link(
+ op[lw - 1] = (word)complex_descr;
+ /* Make sure the descriptor is cleared once there is any danger */
+ /* it may have been collected. */
+ if (EXPECT(GC_general_register_disappearing_link(
(void **)(op + lw - 1), op)
== GC_NO_MEMORY, FALSE))
-# endif
- {
- /* Couldn't register it due to lack of memory. Punt. */
- /* This will probably fail too, but gives the recovery code */
- /* a chance. */
+# endif
+ {
+ /* Couldn't register it due to lack of memory. Punt. */
+ /* This will probably fail too, but gives the recovery code */
+ /* a chance. */
return GC_malloc(lb);
- }
- }
- return op;
+ }
+ }
+ return op;
}