Loading...
--- xnu/xnu-6153.41.3/libkern/c++/OSSerialize.cpp
+++ xnu/xnu-8019.41.5/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,8 +204,7 @@
inCapacity = 1;
}
if (round_page_overflow(inCapacity, &capacity)) {
- tags->release();
- tags = NULL;
+ tags.reset();
return false;
}
@@ -216,8 +215,6 @@
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);
@@ -228,14 +225,13 @@
return true;
}
-OSSerialize *
+OSSharedPtr<OSSerialize>
OSSerialize::withCapacity(unsigned int inCapacity)
{
- OSSerialize *me = new OSSerialize;
+ OSSharedPtr<OSSerialize> me = OSMakeShared<OSSerialize>();
if (me && !me->initWithCapacity(inCapacity)) {
- me->release();
- return NULL;
+ return nullptr;
}
return me;
@@ -303,9 +299,6 @@
void
OSSerialize::free()
{
- OSSafeReleaseNULL(tags);
- OSSafeReleaseNULL(indexData);
-
if (data) {
kmem_free(kernel_map, (vm_offset_t)data, capacity);
OSCONTAINER_ACCUMSIZE( -((size_t)capacity));
@@ -316,15 +309,14 @@
OSDefineMetaClassAndStructors(OSSerializer, OSObject)
-OSSerializer * OSSerializer::forTarget( void * target,
+OSSharedPtr<OSSerializer>
+OSSerializer::forTarget( void * target,
OSSerializerCallback callback, void * ref )
{
- OSSerializer * thing;
-
- thing = new OSSerializer;
+ OSSharedPtr<OSSerializer> thing = OSMakeShared<OSSerializer>();
+
if (thing && !thing->init()) {
- thing->release();
- thing = NULL;
+ thing.reset();
}
if (thing) {
@@ -342,11 +334,11 @@
return ((OSSerializerBlock)ref)(serializer);
}
-OSSerializer *
+OSSharedPtr<OSSerializer>
OSSerializer::withBlock(
OSSerializerBlock callback)
{
- OSSerializer * serializer;
+ OSSharedPtr<OSSerializer> serializer;
OSSerializerBlock block;
block = Block_copy(callback);