Commit b937059c authored by Nikias Bassen's avatar Nikias Bassen

bplist: Improve writing of UID nodes

parent 962d4064
......@@ -1009,22 +1009,16 @@ static void write_dict(bytearray_t * bplist, node_t* node, hashtable_t* ref_tabl
static void write_uid(bytearray_t * bplist, uint64_t val)
{
val = (uint32_t)val;
uint64_t size = get_needed_bytes(val);
uint8_t *buff = NULL;
int size = get_needed_bytes(val);
uint8_t sz;
//do not write 3bytes int node
if (size == 3)
size++;
sz = BPLIST_UID | (size-1); // yes, this is what Apple does...
#ifdef __BIG_ENDIAN__
val = val << ((sizeof(uint64_t) - size) * 8);
#endif
buff = (uint8_t *) malloc(sizeof(uint8_t) + size);
buff[0] = BPLIST_UID | (size-1); // yes, this is what Apple does...
memcpy(buff + 1, &val, size);
byte_convert(buff + 1, size);
byte_array_append(bplist, buff, sizeof(uint8_t) + size);
free(buff);
val = be64toh(val);
byte_array_append(bplist, &sz, 1);
byte_array_append(bplist, (uint8_t*)&val + (8-size), size);
}
static int is_ascii_string(char* s, int len)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment