ObjFW  Diff

Differences From Artifact [8ab72d20c1]:

To Artifact [20e274a7c7]:


283
284
285
286
287
288
289
290



291
292
293
294
295
296
297
298
299
300
301
302




303
304
305
306
307
308
309
283
284
285
286
287
288
289

290
291
292
293
294
295
296
297
298
299
300
301
302


303
304
305
306
307
308
309
310
311
312
313







-
+
+
+










-
-
+
+
+
+







	_writtenLength += length;

	if (_writtenLength != _length && exception == nil)
		return true;

# ifdef OF_HAVE_BLOCKS
	if (_block != NULL) {
		if (!_block(object, _buffer, _writtenLength, exception))
		_length = _block(object, &_buffer, _writtenLength, exception);

		if (_length == 0)
			return false;

		_writtenLength = 0;
		return true;
	} else {
# endif
		bool (*func)(id, SEL, OFStream *, const void *, size_t, id,
		    id) = (bool (*)(id, SEL, OFStream *, const void *, size_t,
		    id, id))[_target methodForSelector: _selector];

		if (!func(_target, _selector, object, _buffer, _writtenLength,
		    _context, exception))
		_length = func(_target, _selector, object, &_buffer,
		    _writtenLength, _context, exception);

		if (_length == 0)
			return false;

		_writtenLength = 0;
		return true;
# ifdef OF_HAVE_BLOCKS
	}
# endif