+ if (!cString || !super::init()) return false;
+
+ newLength = strnlen(cString, kMaxStringLength);
+ if (newLength >= kMaxStringLength) return false;
+
+ newLength++;
+ newString = (char *) kalloc_container(newLength);
+ if (!newString) return false;
+
+ bcopy(cString, newString, newLength);
+
+ if ( !(flags & kOSStringNoCopy) && string) {
+ kfree(string, (vm_size_t)length);
+ OSCONTAINER_ACCUMSIZE(-((size_t)length));
+ }
+ string = newString;
+ length = newLength;
+ flags &= ~kOSStringNoCopy;
+
+ OSCONTAINER_ACCUMSIZE(length);
+
+ return true;
+}
+
+bool OSString::initWithStringOfLength(const char *cString, size_t inlength)
+{
+ unsigned int newLength;
+ char * newString;
+
+ if (!cString || !super::init()) return false;