fingerprint * fingerprint_set::insert(void * data, unsigned data_hash, unsigned num_args, enode * const * args) { fingerprint * d = mk_dummy(data, data_hash, num_args, args); if (m_set.contains(d)) return 0; TRACE("fingerprint_bug", tout << "1) inserting: " << data_hash << " num_args: " << num_args; for (unsigned i = 0; i < num_args; i++) tout << " " << args[i]->get_owner_id(); tout << "\n";);
Object *new_mk_obj(char *name, World * w, int x, int y, Object * parent) { char file_name[256]; sprintf(file_name, "./data/obj_%s.txt", name); FILE *fp = fopen(file_name, "rb"); if (fp == 0) { char buf[512]; sprintf(buf, "unable to open file:%s", file_name); MessageBox(0, buf, "error", MB_OK); exit(1); return 0; } char buf[4096]; memset(buf, 0, sizeof(char) * 4096); int rpos = fread(buf, 1, 4096, fp); fseek(fp, 0, SEEK_END); int epos = ftell(fp); if (rpos != epos) return 0; fclose(fp); Object o = mk_dummy(w, x, y, parent); mod_obj_with_buf(buf, &o); int k = get_empty_obj_index(w); if (k == -1) return 0; w->objs[k] = o; //never return o. o is in stack. therefore it will be deleted when function finished. return &(w->objs[k]); }