@@ -6,12 +6,16 @@ * and returns a kmptr struct referencing that * newly allocated region. */ -kmptr kmheapao(sz size) { - void* ptr = kmheapa(size); +kmcond kmheapao(kmptr* where, sz size) { + void* ptr; + kmcond e = kmheapa(&ptr, size); + if (e != kmcond_ok) return e; kmptr p = { .kind = (ptr != null ? kmkind_heap : kmkind_fail), .ref = ptr, .shred = false, - }; return p; + }; + *where = p; + return kmcond_ok; }