ObjFW  Diff

Differences From Artifact [32c546e84a]:

To Artifact [823c91328e]:


128
129
130
131
132
133
134
135

136
137
138
139

140
141
142
143
144
145
146
147

148
149
150
151
152
153
154
155
156
157
158
159


160
161
162
163
164
165
166
128
129
130
131
132
133
134

135
136
137
138

139
140
141
142
143
144
145
146

147
148
149
150
151
152
153
154
155
156
157


158
159
160
161
162
163
164
165
166







-
+



-
+







-
+










-
-
+
+








	return pos;
}

static OFDate *
createDate(OFData *data)
{
	switch ([data count]) {
	switch (data.count) {
	case 4: {
		uint32_t timestamp;

		memcpy(&timestamp, [data items], 4);
		memcpy(&timestamp, data.items, 4);
		timestamp = OF_BSWAP32_IF_LE(timestamp);

		return [OFDate dateWithTimeIntervalSince1970: timestamp];
	}
	case 8: {
		uint64_t combined;

		memcpy(&combined, [data items], 8);
		memcpy(&combined, data.items, 8);
		combined = OF_BSWAP64_IF_LE(combined);

		return [OFDate dateWithTimeIntervalSince1970:
		    (double)(combined & 0x3FFFFFFFF) +
		    (double)(combined >> 34) / 1000000000];
	}
	case 12: {
		uint32_t nanoseconds;
		int64_t seconds;

		memcpy(&nanoseconds, [data items], 4);
		memcpy(&seconds, (char *)[data items] + 4, 8);
		memcpy(&nanoseconds, data.items, 4);
		memcpy(&seconds, (char *)data.items + 4, 8);

		nanoseconds = OF_BSWAP32_IF_LE(nanoseconds);
		seconds = OF_BSWAP64_IF_LE(seconds);

		return [OFDate dateWithTimeIntervalSince1970:
		    (double)seconds + (double)nanoseconds / 1000000000];
	}
554
555
556
557
558
559
560
561

562
563
564

565
566
567

568
569
570
571
572
573
574
575
576
554
555
556
557
558
559
560

561
562
563

564
565
566

567
568
569
570
571
572
573
574
575
576







-
+


-
+


-
+









{
	return [self messagePackValueWithDepthLimit: 32];
}

- (id)messagePackValueWithDepthLimit: (size_t)depthLimit
{
	void *pool = objc_autoreleasePoolPush();
	size_t count = [self count];
	size_t count = self.count;
	id object;

	if ([self itemSize] != 1)
	if (self.itemSize != 1)
		@throw [OFInvalidArgumentException exception];

	if (parseObject([self items], count, &object, depthLimit) != count)
	if (parseObject(self.items, count, &object, depthLimit) != count)
		@throw [OFInvalidFormatException exception];

	[object retain];

	objc_autoreleasePoolPop(pool);

	return [object autorelease];
}
@end