Differences From Artifact [380728b304]:
- File
src/OFKernelEventObserver.m
— part of check-in
[13ee56edf3]
at
2014-06-21 21:43:43
on branch trunk
— Move all macros from OFObject.h to macros.h
This means that OFObject.h imports macros.h now, making it unnecessary
to manually import macros.h in almost every file. And while at it, also
import autorelease.h in OFObject.h, so that this doesn't need to be
manually imported in almost every file as well. (user: js, size: 8962) [annotate] [blame] [check-ins using]
To Artifact [3ffd7510cd]:
- File
src/OFKernelEventObserver.m
— part of check-in
[1dbe9a4e4e]
at
2014-08-22 19:09:34
on branch trunk
— Retain sockets until after removal from observer
Not retaining them caused kevent() to be called on an invalid fd. (user: js, size: 9071) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
295 296 297 298 299 300 301 | } - (void)OF_removeFileDescriptorForWriting: (int)fd { OF_UNRECOGNIZED_SELECTOR } | | | 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 | } - (void)OF_removeFileDescriptorForWriting: (int)fd { OF_UNRECOGNIZED_SELECTOR } - (void)OF_processQueueAndStoreRemovedIn: (OFMutableArray*)removed { #ifdef OF_HAVE_THREADS [_mutex lock]; #endif @try { id const *queueObjects = [_queue objects]; int *queueInfoItems = [_queueInfo items]; |
︙ | ︙ | |||
344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 | [self OF_addFileDescriptorForWriting: fd]; break; case QUEUE_REMOVE | QUEUE_READ: [self OF_removeFileDescriptorForReading: fd]; [_readObjects removeObjectIdenticalTo: object]; break; case QUEUE_REMOVE | QUEUE_WRITE: [self OF_removeFileDescriptorForWriting: fd]; [_writeObjects removeObjectIdenticalTo: object]; break; default: assert(0); } } | > > | 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 | [self OF_addFileDescriptorForWriting: fd]; break; case QUEUE_REMOVE | QUEUE_READ: [self OF_removeFileDescriptorForReading: fd]; [removed addObject: object]; [_readObjects removeObjectIdenticalTo: object]; break; case QUEUE_REMOVE | QUEUE_WRITE: [self OF_removeFileDescriptorForWriting: fd]; [removed addObject: object]; [_writeObjects removeObjectIdenticalTo: object]; break; default: assert(0); } } |
︙ | ︙ |