void kp_objclone(ktap_state *ks, const ktap_value *o, ktap_value *newo) { if (ttisbtrace(o)) { ktap_btrace *bt; bt = kp_newbacktrace(ks); bt->nr_entries = btvalue(o)->nr_entries; memcpy(&bt->entries[0], &btvalue(o)->entries[0], sizeof(bt->entries)); setbtvalue(newo, bt); } else { kp_error(ks, "cannot clone ktap value type %d\n", ttype(o)); setnilvalue(newo); } }
void kp_objclone(ktap_state *ks, const ktap_value *o, ktap_value *newo, ktap_gcobject **list) { if (ttisbtrace(o)) { int nr_entries = btvalue(o)->nr_entries; ktap_btrace *bt; bt = kp_newbacktrace(ks, nr_entries, list); memcpy((unsigned long *)(bt + 1), btvalue(o) + 1, nr_entries * sizeof(unsigned long)); setbtvalue(newo, bt); } else { kp_error(ks, "cannot clone ktap value type %d\n", ttype(o)); setnilvalue(newo); } }