ObjFW  Diff

Differences From Artifact [dd32892024]:

  • File src/OFMutableArray_adjacent.m — part of check-in [4dbca9fc06] at 2014-04-08 17:01:53 on branch trunk — OFArray_adjacent: Optimize fast enumeration

    This restores the previous behaviour for OFArray_adjacent. It was lost
    when OFArray's fast enumeration was changed to be better optimized for
    huge arrays that aren't adjacent in memory. I forgot that
    OFArray_adjacent just used the implementation from OFArray, as OFArray
    had the ideal implementation for OFArray_adjacent, but now that OFArray
    is optimized for huge, non-adjacent arrays, this wasn't the case
    anymore. (user: js, size: 7594) [annotate] [blame] [check-ins using]

To Artifact [1c77ed7f95]:

  • File src/OFMutableArray_adjacent.m — part of check-in [4e59d2692f] at 2014-04-26 00:40:17 on branch trunk — Fix a few issues on LLP64 and Win64

    LLP64 was mostly fast enumeration using an unsigned long for the state,
    which can't store a pointer or a size_t on LLP64. This is now solved by
    either throwing an OFOutOfRangeException if the value of the size_t is
    bigger than ULONG_MAX or storing the pointer in the extra field (copied
    using memcpy, as it's an array of unsigned long, which again would be
    too small to store a pointer).

    Win64 was mostly Microsoft not being able to decide whether a length is
    a size_t, a DWORD, an int or an unsigned int (thus the different types
    in places that seem to be almost the same). But since that would not be
    confusing enough, a file descriptor is an int if it's for a file, but a
    long long if it is for a socket. But of course, for ReadFile and friends
    it's a DWORD instead of an int then. (user: js, size: 7609) [annotate] [blame] [check-ins using]


316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
		state->mutationsPtr = &_mutations;
		return ret;
	}

	if (state->state >= count)
		return 0;

	state->state = count;
	state->itemsPtr = [_array items];
	state->mutationsPtr = &_mutations;

	return (int)count;
}

- (OFEnumerator*)objectEnumerator







|







316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
		state->mutationsPtr = &_mutations;
		return ret;
	}

	if (state->state >= count)
		return 0;

	state->state = (unsigned long)count;
	state->itemsPtr = [_array items];
	state->mutationsPtr = &_mutations;

	return (int)count;
}

- (OFEnumerator*)objectEnumerator