Loading...
--- xnu/xnu-12377.101.15/libkern/c++/OSString.cpp
+++ xnu/xnu-6153.11.26/libkern/c++/OSString.cpp
@@ -28,21 +28,17 @@
/* IOString.m created by rsulack on Wed 17-Sep-1997 */
/* IOString.cpp converted to C++ on Tue 1998-9-22 */
-#define IOKIT_ENABLE_SHARED_PTR
-
#include <string.h>
#include <libkern/c++/OSString.h>
#include <libkern/c++/OSSerialize.h>
-#include <libkern/c++/OSSharedPtr.h>
#include <libkern/c++/OSLib.h>
#include <libkern/c++/OSData.h>
#include <string.h>
#define super OSObject
-OSDefineMetaClassAndStructorsWithZone(OSString, OSObject,
- (zone_create_flags_t) (ZC_CACHING | ZC_ZFREE_CLEARMEM))
+OSDefineMetaClassAndStructors(OSString, OSObject)
OSMetaClassDefineReservedUnused(OSString, 0);
OSMetaClassDefineReservedUnused(OSString, 1);
OSMetaClassDefineReservedUnused(OSString, 2);
@@ -76,14 +72,13 @@
return false;
}
- newLength = (unsigned int) strnlen(cString, kMaxStringLength);
+ newLength = strnlen(cString, kMaxStringLength);
if (newLength >= kMaxStringLength) {
return false;
}
newLength++;
- newString = (char *)kalloc_data(newLength,
- Z_VM_TAG_BT(Z_WAITOK, VM_KERN_MEMORY_LIBKERN));
+ newString = (char *) kalloc_container(newLength);
if (!newString) {
return false;
}
@@ -91,7 +86,7 @@
bcopy(cString, newString, newLength);
if (!(flags & kOSStringNoCopy) && string) {
- kfree_data(string, length);
+ kfree(string, (vm_size_t)length);
OSCONTAINER_ACCUMSIZE(-((size_t)length));
}
string = newString;
@@ -107,7 +102,6 @@
OSString::initWithStringOfLength(const char *cString, size_t inlength)
{
unsigned int newLength;
- unsigned int cStringLength;
char * newString;
if (!cString || !super::init()) {
@@ -118,15 +112,12 @@
return false;
}
- cStringLength = (unsigned int)strnlen(cString, inlength);
-
- if (cStringLength < inlength) {
- inlength = cStringLength;
- }
-
- newLength = (unsigned int) (inlength + 1);
- newString = (char *)kalloc_data(newLength,
- Z_VM_TAG_BT(Z_WAITOK, VM_KERN_MEMORY_LIBKERN));
+ if (strnlen(cString, inlength) < inlength) {
+ return false;
+ }
+
+ newLength = inlength + 1;
+ newString = (char *) kalloc_container(newLength);
if (!newString) {
return false;
}
@@ -135,7 +126,7 @@
newString[inlength] = 0;
if (!(flags & kOSStringNoCopy) && string) {
- kfree_data(string, length);
+ kfree(string, (vm_size_t)length);
OSCONTAINER_ACCUMSIZE(-((size_t)length));
}
@@ -155,7 +146,7 @@
return false;
}
- length = (unsigned int) strnlen(cString, kMaxStringLength);
+ length = strnlen(cString, kMaxStringLength);
if (length >= kMaxStringLength) {
return false;
}
@@ -167,49 +158,53 @@
return true;
}
-OSSharedPtr<OSString>
+OSString *
OSString::withString(const OSString *aString)
{
- OSSharedPtr<OSString> me = OSMakeShared<OSString>();
+ OSString *me = new OSString;
if (me && !me->initWithString(aString)) {
- return nullptr;
- }
-
- return me;
-}
-
-OSSharedPtr<OSString>
+ me->release();
+ return NULL;
+ }
+
+ return me;
+}
+
+OSString *
OSString::withCString(const char *cString)
{
- OSSharedPtr<OSString> me = OSMakeShared<OSString>();
+ OSString *me = new OSString;
if (me && !me->initWithCString(cString)) {
- return nullptr;
- }
-
- return me;
-}
-
-OSSharedPtr<OSString>
+ me->release();
+ return NULL;
+ }
+
+ return me;
+}
+
+OSString *
OSString::withCStringNoCopy(const char *cString)
{
- OSSharedPtr<OSString> me = OSMakeShared<OSString>();
+ OSString *me = new OSString;
if (me && !me->initWithCStringNoCopy(cString)) {
- return nullptr;
- }
-
- return me;
-}
-
-OSSharedPtr<OSString>
-OSString::withCString(const char *cString, size_t length)
-{
- OSSharedPtr<OSString> me = OSMakeShared<OSString>();
+ me->release();
+ return NULL;
+ }
+
+ return me;
+}
+
+OSString *
+OSString::withStringOfLength(const char *cString, size_t length)
+{
+ OSString *me = new OSString;
if (me && !me->initWithStringOfLength(cString, length)) {
- return nullptr;
+ me->release();
+ return NULL;
}
return me;
@@ -250,7 +245,7 @@
OSString::free()
{
if (!(flags & kOSStringNoCopy) && string) {
- kfree_data(string, length);
+ kfree(string, (vm_size_t)length);
OSCONTAINER_ACCUMSIZE(-((size_t)length));
}
@@ -330,7 +325,7 @@
return false;
}
- unsigned int dataLen = obj->getLength();
+ unsigned int dataLen = obj->getLength();;
const char * dataPtr = (const char *) obj->getBytesNoCopy();
if (dataLen != length) {