ObjFW  Diff

Differences From Artifact [9fc4f60d3b]:

To Artifact [e861c4b211]:


313
314
315
316
317
318
319
320
321

322
323
324
325
326
327
328
313
314
315
316
317
318
319


320
321
322
323
324
325
326
327







-
-
+







	 */
	if ((capacity < _capacity && count > _count) || capacity < MIN_CAPACITY)
		return;

	buckets = [self allocMemoryWithSize: sizeof(*buckets)
				      count: capacity];

	for (i = 0; i < capacity; i++)
		buckets[i] = NULL;
	memset(buckets, 0, capacity * sizeof(*buckets));

	for (i = 0; i < _capacity; i++) {
		if (_buckets[i] != NULL && _buckets[i] != &deleted) {
			uint32_t j, last;

			last = capacity;

380
381
382
383
384
385
386
387

388
389
390
391
392
393
394
379
380
381
382
383
384
385

386
387
388
389
390
391
392
393







-
+







				continue;

			if (_keyFunctions.equal(_buckets[i]->key, key))
				break;
		}
	}

	/* Key not in dictionary */
	/* Key not in map table */
	if (i >= last || _buckets[i] == NULL || _buckets[i] == &deleted ||
	    !_keyFunctions.equal(_buckets[i]->key, key)) {
		struct of_map_table_bucket *bucket;

		[self OF_resizeForCount: _count + 1];

		_mutations++;
417
418
419
420
421
422
423
424

425
426
427
428
429
430
431
416
417
418
419
420
421
422

423
424
425
426
427
428
429
430







-
+







			[self freeMemory: bucket];
			@throw e;
		}

		@try {
			bucket->value = _valueFunctions.retain(value);
		} @catch (id e) {
			_keyFunctions.release(key);
			_keyFunctions.release(bucket->key);
			[self freeMemory: bucket];
			@throw e;
		}

		bucket->hash = hash;

		_buckets[i] = bucket;