bool RecvEntitiesEvent::set(int packetNum, int seq, char *data, int n) { char *p = data; m_time = BINARY_GET_DOUBLE_INCR(p); for (;;) { int head = p - data; int left = n - head; if (left <= 0) { fprintf(stderr, "RecvEntitiesEvent : packet too small left = %d\n", left); return false; } if (CommData::isPacketEnd(p)) { break; } SimObj *obj = new SimObj(); int r = obj->setBinary(p, left); if (r < 0) { return false; } push(obj); p += r; } return true; }