Loading...
libkern/c++/OSCollectionIterator.cpp xnu-6153.141.1 xnu-7195.50.7.100.1
--- xnu/xnu-6153.141.1/libkern/c++/OSCollectionIterator.cpp
+++ xnu/xnu-7195.50.7.100.1/libkern/c++/OSCollectionIterator.cpp
@@ -27,10 +27,13 @@
  */
 /* IOArray.h created by rsulack on Thu 11-Sep-1997 */
 
+#define IOKIT_ENABLE_SHARED_PTR
+
+#include <libkern/c++/OSArray.h>
+#include <libkern/c++/OSCollection.h>
 #include <libkern/c++/OSCollectionIterator.h>
-#include <libkern/c++/OSCollection.h>
-#include <libkern/c++/OSArray.h>
 #include <libkern/c++/OSLib.h>
+#include <libkern/c++/OSSharedPtr.h>
 
 #define super OSIterator
 
@@ -43,8 +46,7 @@
 		return false;
 	}
 
-	inColl->retain();
-	collection = inColl;
+	collection.reset(inColl, OSRetain);
 	collIterator = NULL;
 	initialUpdateStamp = 0;
 	valid = false;
@@ -52,14 +54,13 @@
 	return true;
 }
 
-OSCollectionIterator *
+OSSharedPtr<OSCollectionIterator>
 OSCollectionIterator::withCollection(const OSCollection *inColl)
 {
-	OSCollectionIterator *me = new OSCollectionIterator;
+	OSSharedPtr<OSCollectionIterator> me = OSMakeShared<OSCollectionIterator>();
 
 	if (me && !me->initWithCollection(inColl)) {
-		me->release();
-		return NULL;
+		return nullptr;
 	}
 
 	return me;
@@ -74,10 +75,7 @@
 		collIterator = NULL;
 	}
 
-	if (collection) {
-		collection->release();
-		collection = NULL;
-	}
+	collection.reset();
 
 	super::free();
 }