Loading...
--- xnu/xnu-4570.71.2/libkern/c++/OSSerializeBinary.cpp
+++ xnu/xnu-3789.1.32/libkern/c++/OSSerializeBinary.cpp
@@ -69,9 +69,8 @@
unsigned int newCapacity;
size_t alignSize;
- if (os_add_overflow(size, 3, &alignSize)) return (false);
- alignSize &= ~3L;
- if (os_add_overflow(length, alignSize, &newCapacity)) return (false);
+ alignSize = ((size + 3) & ~3L);
+ newCapacity = length + alignSize;
if (newCapacity >= capacity)
{
newCapacity = (((newCapacity - 1) / capacityIncrement) + 1) * capacityIncrement;
@@ -93,9 +92,8 @@
// add to tag array
tags->setObject(o);
- if (os_add3_overflow(size, sizeof(key), 3, &alignSize)) return (false);
- alignSize &= ~3L;
- if (os_add_overflow(length, alignSize, &newCapacity)) return (false);
+ alignSize = ((size + sizeof(key) + 3) & ~3L);
+ newCapacity = length + alignSize;
if (newCapacity >= capacity)
{
newCapacity = (((newCapacity - 1) / capacityIncrement) + 1) * capacityIncrement;
@@ -269,7 +267,7 @@
OSObject ** stackArray;
uint32_t stackCapacity;
- enum { stackCapacityMax = 64 };
+ enum { stackCapacityMax = 64*1024 };
uint32_t stackIdx;
OSObject * result;
@@ -411,7 +409,7 @@
sym = OSDynamicCast(OSSymbol, sym);
if (!sym && (str = OSDynamicCast(OSString, str)))
{
- sym = const_cast<OSSymbol *>(OSSymbol::withString(str));
+ sym = (OSSymbol *) OSSymbol::withString(str);
ok = (sym != 0);
if (!ok) break;
}
@@ -432,12 +430,14 @@
if (!ok) break;
- if (end) parent = 0;
if (newCollect)
{
- stackIdx++;
- setAtIndex(stack, stackIdx, parent);
- if (!ok) break;
+ if (!end)
+ {
+ stackIdx++;
+ setAtIndex(stack, stackIdx, parent);
+ if (!ok) break;
+ }
DEBG("++stack[%d] %p\n", stackIdx, parent);
parent = o;
dict = newDict;
@@ -448,15 +448,11 @@
if (end)
{
- while (stackIdx)
- {
- parent = stackArray[stackIdx];
- DEBG("--stack[%d] %p\n", stackIdx, parent);
- stackIdx--;
- if (parent) break;
- }
- if (!parent) break;
- set = 0;
+ if (!stackIdx) break;
+ parent = stackArray[stackIdx];
+ DEBG("--stack[%d] %p\n", stackIdx, parent);
+ stackIdx--;
+ set = 0;
dict = 0;
array = 0;
if (!(dict = OSDynamicCast(OSDictionary, parent)))