Loading...
libkern/c++/OSCollectionIterator.cpp xnu-4903.270.47 xnu-7195.121.3
--- xnu/xnu-4903.270.47/libkern/c++/OSCollectionIterator.cpp
+++ xnu/xnu-7195.121.3/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,23 +46,21 @@
 		return false;
 	}
 
-	inColl->retain();
-	collection = inColl;
-	collIterator = 0;
+	collection.reset(inColl, OSRetain);
+	collIterator = NULL;
 	initialUpdateStamp = 0;
 	valid = false;
 
 	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 0;
+		return nullptr;
 	}
 
 	return me;
@@ -71,13 +72,10 @@
 	if (collIterator) {
 		kfree(collIterator, collection->iteratorSize());
 		OSCONTAINER_ACCUMSIZE(-((size_t) collection->iteratorSize()));
-		collIterator = 0;
+		collIterator = NULL;
 	}
 
-	if (collection) {
-		collection->release();
-		collection = 0;
-	}
+	collection.reset();
 
 	super::free();
 }
@@ -128,9 +126,9 @@
 	bool retVal;
 
 	if (!isValid()) {
-		return 0;
+		return NULL;
 	}
 
 	retVal = collection->getNextObjectForIterator(collIterator, &retObj);
-	return (retVal)? retObj : 0;
+	return (retVal)? retObj : NULL;
 }