Overview
Comment: | OFString: Make freeWhenDone behave like in OFData
In particular, this means that if initialization fails, the buffer is |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
0f260e0fd556a6e53c9a175e573ce59b |
User & Date: | js on 2020-11-06 02:37:02 |
Other Links: | manifest | tags |
Context
2020-11-07
| ||
10:38 | Make GCC happy again check-in: 7aa23887d0 user: js tags: trunk | |
2020-11-06
| ||
02:37 | OFString: Make freeWhenDone behave like in OFData check-in: 0f260e0fd5 user: js tags: trunk | |
02:24 | Future-proof some code using freeWhenDone check-in: a2b4238850 user: js tags: trunk | |
Changes
Modified src/OFString.m from [ab9d9164f8] to [7044157852].
︙ | ︙ | |||
832 833 834 835 836 837 838 | encoding: OF_STRING_ENCODING_UTF_8 length: UTF8StringLength]; } - (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String freeWhenDone: (bool)freeWhenDone { | | < < < | | < < < < | | | | | < | 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 | encoding: OF_STRING_ENCODING_UTF_8 length: UTF8StringLength]; } - (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String freeWhenDone: (bool)freeWhenDone { id ret = [self initWithUTF8String: UTF8String]; if (freeWhenDone) free(UTF8String); return ret; } - (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String length: (size_t)UTF8StringLength freeWhenDone: (bool)freeWhenDone { id ret = [self initWithUTF8String: UTF8String length: UTF8StringLength]; if (freeWhenDone) free(UTF8String); return ret; } - (instancetype)initWithCString: (const char *)cString encoding: (of_string_encoding_t)encoding { |
︙ | ︙ |
Modified src/OFUTF8String.m from [d8b3a6972a] to [e04f7e1202].
︙ | ︙ | |||
400 401 402 403 404 405 406 | } - (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String length: (size_t)UTF8StringLength freeWhenDone: (bool)freeWhenDone { | < | < < < < < < < < < < < > > > > > > | 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 | } - (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String length: (size_t)UTF8StringLength freeWhenDone: (bool)freeWhenDone { self = [super init]; @try { _s = &_storage; if (UTF8StringLength >= 3 && memcmp(UTF8String, "\xEF\xBB\xBF", 3) == 0) { UTF8String += 3; UTF8StringLength -= 3; } switch (of_string_utf8_check(UTF8String, UTF8StringLength, &_s->length)) { case 1: _s->isUTF8 = true; break; case -1: @throw [OFInvalidEncodingException exception]; } _s->cString = (char *)UTF8String; _s->cStringLength = UTF8StringLength; if (freeWhenDone) _s->freeWhenDone = UTF8String; } @catch (id e) { [self release]; @throw e; } return self; } |
︙ | ︙ |