@@ -417,10 +417,20 @@ { return (id)[[OFString_UTF8 alloc] initWithUTF8StringNoCopy: UTF8String freeWhenDone: freeWhenDone]; } + +- (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String + length: (size_t)UTF8StringLength + freeWhenDone: (bool)freeWhenDone +{ + return (id)[[OFString_UTF8 alloc] + initWithUTF8StringNoCopy: UTF8String + length: UTF8StringLength + freeWhenDone: freeWhenDone]; +} - (instancetype)initWithCString: (const char *)cString encoding: (of_string_encoding_t)encoding { if (encoding == OF_STRING_ENCODING_UTF_8) { @@ -656,10 +666,20 @@ { return [[[self alloc] initWithUTF8StringNoCopy: UTF8String freeWhenDone: freeWhenDone] autorelease]; } + ++ (instancetype)stringWithUTF8StringNoCopy: (char *)UTF8String + length: (size_t)UTF8StringLength + freeWhenDone: (bool)freeWhenDone +{ + return [[[self alloc] + initWithUTF8StringNoCopy: UTF8String + length: UTF8StringLength + freeWhenDone: freeWhenDone] autorelease]; +} + (instancetype)stringWithCString: (const char *)cString encoding: (of_string_encoding_t)encoding { return [[[self alloc] initWithCString: cString @@ -842,10 +862,18 @@ - (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String freeWhenDone: (bool)freeWhenDone { return [self initWithUTF8String: UTF8String]; } + +- (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String + length: (size_t)UTF8StringLength + freeWhenDone: (bool)freeWhenDone +{ + return [self initWithUTF8String: UTF8String + length: UTF8StringLength]; +} - (instancetype)initWithCString: (const char *)cString encoding: (of_string_encoding_t)encoding { return [self initWithCString: cString