// Run a couple of sanity checks before returning the value from a constructor. // Returns a condition if the check fails, otherwise returns the given value. static value_t post_create_sanity_check(value_t value, size_t size) { TRY(heap_object_validate(value)); heap_object_layout_t layout; heap_object_layout_init(&layout); get_heap_object_layout(value, &layout); COND_CHECK_EQ("post create sanity", ccValidationFailed, layout.size, size); return value; }
value_t value_validate(value_t value) { switch (get_value_domain(value)) { case vdHeapObject: return heap_object_validate(value); case vdDerivedObject: return derived_object_validate(value); default: return success(); } }