ObjFW  Check-in [0c7c53dd58]

Overview
Comment:OFProcess: Improve environment handling on Win32

This makes sure to return NULL if the passed environment is nil and
makes sure that the environment is always terminated with 4 zero bytes,
even if the environment is empty.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 0c7c53dd58af65494176d838c23e5400d3d6ed2f8b204c8c99d25a92f31c5383
User & Date: js on 2016-05-28 13:18:54
Other Links: manifest | tags
Context
2016-05-28
14:22
OFStdIOStream_Win32Console: Add explicit casts check-in: 9ad332a3ea user: js tags: trunk
13:18
OFProcess: Improve environment handling on Win32 check-in: 0c7c53dd58 user: js tags: trunk
11:37
Add a reference to OFStdIOStream_Win32Console check-in: e53a4fd61c user: js tags: trunk
Changes

Modified src/OFProcess.m from [03cde41f41] to [e8f32c52e1].

403
404
405
406
407
408
409
410
411
412
413
414





415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
	envp[i] = NULL;

	return envp;
}
#else
- (of_char16_t*)OF_environmentForDictionary: (OFDictionary*)environment
{
	OFDataArray *env = [OFDataArray dataArrayWithItemSize: 2];
	OFEnumerator *keyEnumerator, *objectEnumerator;
	OFString *key, *object;
	const of_char16_t equal = '=';
	const of_char16_t zero = 0;






	keyEnumerator = [environment keyEnumerator];
	objectEnumerator = [environment objectEnumerator];

	while ((key = [keyEnumerator nextObject]) != nil &&
	    (object = [objectEnumerator nextObject]) != nil) {
		[env addItems: [key UTF16String]
			count: [key UTF16StringLength]];
		[env addItems: &equal
			count: 1];
		[env addItems: [object UTF16String]
			count: [object UTF16StringLength]];
		[env addItems: &zero
			count: 1];
	}
	[env addItems: &zero
		count: 1];

	return [env items];
}
#endif

- (bool)lowlevelIsAtEndOfStream
{







|



|
>
>
>
>
>



<











|
|







403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422

423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
	envp[i] = NULL;

	return envp;
}
#else
- (of_char16_t*)OF_environmentForDictionary: (OFDictionary*)environment
{
	OFDataArray *env;
	OFEnumerator *keyEnumerator, *objectEnumerator;
	OFString *key, *object;
	const of_char16_t equal = '=';
	const of_char16_t zero[2] = { 0, 0 };

	if (environment == nil)
		return NULL;

	env = [OFDataArray dataArrayWithItemSize: sizeof(of_char16_t)];

	keyEnumerator = [environment keyEnumerator];
	objectEnumerator = [environment objectEnumerator];

	while ((key = [keyEnumerator nextObject]) != nil &&
	    (object = [objectEnumerator nextObject]) != nil) {
		[env addItems: [key UTF16String]
			count: [key UTF16StringLength]];
		[env addItems: &equal
			count: 1];
		[env addItems: [object UTF16String]
			count: [object UTF16StringLength]];
		[env addItems: &zero
			count: 1];
	}
	[env addItems: zero
		count: 2];

	return [env items];
}
#endif

- (bool)lowlevelIsAtEndOfStream
{