Loading...
libkern/c++/OSSerialize.cpp xnu-8019.41.5 xnu-6153.41.3
--- xnu/xnu-8019.41.5/libkern/c++/OSSerialize.cpp
+++ xnu/xnu-6153.41.3/libkern/c++/OSSerialize.cpp
@@ -27,15 +27,15 @@
  */
 /* OSSerialize.cpp created by rsulack on Wen 25-Nov-1998 */
 
-#define IOKIT_ENABLE_SHARED_PTR
-
 #include <sys/cdefs.h>
+
+__BEGIN_DECLS
 #include <vm/vm_kern.h>
+__END_DECLS
 
 #include <libkern/c++/OSContainers.h>
 #include <libkern/c++/OSLib.h>
 #include <libkern/c++/OSDictionary.h>
-#include <libkern/c++/OSSharedPtr.h>
 #include <libkern/OSSerializeBinary.h>
 #include <libkern/Block.h>
 #include <IOKit/IOLib.h>
@@ -204,7 +204,8 @@
 		inCapacity = 1;
 	}
 	if (round_page_overflow(inCapacity, &capacity)) {
-		tags.reset();
+		tags->release();
+		tags = NULL;
 		return false;
 	}
 
@@ -215,6 +216,8 @@
 
 	kern_return_t rc = kmem_alloc(kernel_map, (vm_offset_t *)&data, capacity, IOMemoryTag(kernel_map));
 	if (rc) {
+		tags->release();
+		tags = NULL;
 		return false;
 	}
 	bzero((void *)data, capacity);
@@ -225,13 +228,14 @@
 	return true;
 }
 
-OSSharedPtr<OSSerialize>
+OSSerialize *
 OSSerialize::withCapacity(unsigned int inCapacity)
 {
-	OSSharedPtr<OSSerialize> me = OSMakeShared<OSSerialize>();
+	OSSerialize *me = new OSSerialize;
 
 	if (me && !me->initWithCapacity(inCapacity)) {
-		return nullptr;
+		me->release();
+		return NULL;
 	}
 
 	return me;
@@ -299,6 +303,9 @@
 void
 OSSerialize::free()
 {
+	OSSafeReleaseNULL(tags);
+	OSSafeReleaseNULL(indexData);
+
 	if (data) {
 		kmem_free(kernel_map, (vm_offset_t)data, capacity);
 		OSCONTAINER_ACCUMSIZE( -((size_t)capacity));
@@ -309,14 +316,15 @@
 
 OSDefineMetaClassAndStructors(OSSerializer, OSObject)
 
-OSSharedPtr<OSSerializer>
-OSSerializer::forTarget( void * target,
+OSSerializer * OSSerializer::forTarget( void * target,
     OSSerializerCallback callback, void * ref )
 {
-	OSSharedPtr<OSSerializer> thing = OSMakeShared<OSSerializer>();
-
+	OSSerializer * thing;
+
+	thing = new OSSerializer;
 	if (thing && !thing->init()) {
-		thing.reset();
+		thing->release();
+		thing = NULL;
 	}
 
 	if (thing) {
@@ -334,11 +342,11 @@
 	return ((OSSerializerBlock)ref)(serializer);
 }
 
-OSSharedPtr<OSSerializer>
+OSSerializer *
 OSSerializer::withBlock(
 	OSSerializerBlock callback)
 {
-	OSSharedPtr<OSSerializer> serializer;
+	OSSerializer * serializer;
 	OSSerializerBlock block;
 
 	block = Block_copy(callback);