Overview
Comment: | Also release the pools when we release the pool list. We need to do that manually as we disabled retain / release for the list. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
03618ea87b2b32d00dd34185fd265a8a |
User & Date: | js on 2009-01-07 17:10:18 |
Other Links: | manifest | tags |
Context
2009-01-07
| ||
20:49 | For some reason, proper overflow checks were only in OFBigArray. check-in: f724e6d794 user: js tags: trunk | |
17:10 |
Also release the pools when we release the pool list. We need to do that manually as we disabled retain / release for the list. check-in: 03618ea87b user: js tags: trunk | |
2009-01-06
| ||
22:38 |
Use OFList and OFArray in OFAutoreleasePool. This reduces code duplication and looks far better. check-in: dfc10dbeb8 user: js tags: trunk | |
Changes
Modified src/OFAutoreleasePool.m from [8a91012795] to [d3843af4f8].
︙ | ︙ | |||
31 32 33 34 35 36 37 | #define get_tls(t) TlsGetValue(t) #define set_tls(t, v) TlsSetValue(t, v) static DWORD pool_list_key; #endif #ifndef _WIN32 static void | > > > | | > > > > > > | | | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #define get_tls(t) TlsGetValue(t) #define set_tls(t, v) TlsSetValue(t, v) static DWORD pool_list_key; #endif #ifndef _WIN32 static void release_list(void *list) { of_list_object_t *first, *iter; IMP release; if ((first = [(OFList*)list first]) != NULL) release = [first->object methodFor: @selector(release)]; for (iter = first; iter != NULL; iter = iter->next) release(iter->object, @selector(release)); [(OFList*)list release]; } #endif @implementation OFAutoreleasePool + (void)initialize { #ifndef _WIN32 if (pthread_key_create(&pool_list_key, release_list)) @throw [OFInitializationFailedException newWithClass: self]; #else /* FIXME: Free stuff when thread is terminated! */ if ((pool_list_key = TlsAlloc()) == TLS_OUT_OF_INDEXES) @throw [OFInitializationFailedException newWithClass: self]; #endif } |
︙ | ︙ |
Modified src/OFXMLFactory.m from [482f651e16] to [3b5278a052].
︙ | ︙ | |||
137 138 139 140 141 142 143 | */ @try { va_start(args, data); while ((arg = va_arg(args, char*)) != NULL && (val = va_arg(args, char*)) != NULL) { esc_val = NULL; /* Needed for our @catch */ | | | 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | */ @try { va_start(args, data); while ((arg = va_arg(args, char*)) != NULL && (val = va_arg(args, char*)) != NULL) { esc_val = NULL; /* Needed for our @catch */ esc_val = [self escapeCString: val]; xf_resize_chars(&xml, &len, 1 + strlen(arg) + 2 + strlen(esc_val) + 1, self); xml[i++] = ' '; memcpy(xml + i, arg, strlen(arg)); i += strlen(arg); |
︙ | ︙ |