Skip to content

Commit

Permalink
Eliminate shared this from std/process.d
Browse files Browse the repository at this point in the history
  • Loading branch information
andralex committed Jun 11, 2017
1 parent 4f2d89b commit 9c0437b
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 33 deletions.
2 changes: 1 addition & 1 deletion posix.mak
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ EXTRA_MODULES_INTERNAL := $(addprefix std/, \
cstring digest/sha_SSSE3 \
$(addprefix math/, biguintcore biguintnoasm biguintx86 \
errorfunction gammafunction ) \
processinit scopebuffer test/dummyrange \
scopebuffer test/dummyrange \
$(addprefix unicode_, comp decomp grapheme norm tables) \
) \
)
Expand Down
22 changes: 0 additions & 22 deletions std/internal/processinit.d

This file was deleted.

22 changes: 14 additions & 8 deletions std/process.d
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ version (Windows)

import std.range.primitives;
import std.stdio;
import std.internal.processinit;
import std.internal.cstring;


Expand Down Expand Up @@ -133,20 +132,25 @@ version (Posix)
{
version (OSX)
{
extern(C) char*** _NSGetEnviron() nothrow;
private __gshared const(char**)* environPtr;
extern(C) void std_process_shared_static_this() { environPtr = _NSGetEnviron(); }
const(char**) environ() @property @trusted nothrow { return *environPtr; }
private extern(C) char*** _NSGetEnviron() nothrow;
private const(char**) getEnvironPtr() @property @trusted
{
return *_NSGetEnviron;
}
}
else
{
// Made available by the C runtime:
extern(C) extern __gshared const char** environ;
private extern(C) extern __gshared const char** environ;
private const(char**) getEnvironPtr() @property @trusted
{
return environ;
}
}

@system unittest
{
new Thread({assert(environ !is null);}).start();
new Thread({assert(getEnvironPtr !is null);}).start();
}
}

Expand Down Expand Up @@ -635,6 +639,7 @@ private const(char*)* createEnv(const string[string] childEnv,
{
// Determine the number of strings in the parent's environment.
int parentEnvLength = 0;
auto environ = getEnvironPtr;
if (mergeWithParentEnv)
{
if (childEnv.length == 0) return environ;
Expand Down Expand Up @@ -669,6 +674,7 @@ version (Posix) @system unittest
auto e2 = createEnv(null, true);
assert(e2 != null);
int i = 0;
auto environ = getEnvironPtr;
for (; environ[i] != null; ++i)
{
assert(e2[i] != null);
Expand Down Expand Up @@ -3232,6 +3238,7 @@ static:
string[string] aa;
version (Posix)
{
auto environ = getEnvironPtr;
for (int i=0; environ[i] != null; ++i)
{
import std.string : indexOf;
Expand Down Expand Up @@ -3801,4 +3808,3 @@ else version (Posix)
}
else
static assert(0, "os not supported");

1 change: 0 additions & 1 deletion win32.mak
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,6 @@ SRC_STD_C_FREEBSD= \

SRC_STD_INTERNAL= \
std\internal\cstring.d \
std\internal\processinit.d \
std\internal\unicode_tables.d \
std\internal\unicode_comp.d \
std\internal\unicode_decomp.d \
Expand Down
1 change: 0 additions & 1 deletion win64.mak
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,6 @@ SRC_STD_C_FREEBSD= \

SRC_STD_INTERNAL= \
std\internal\cstring.d \
std\internal\processinit.d \
std\internal\unicode_tables.d \
std\internal\unicode_comp.d \
std\internal\unicode_decomp.d \
Expand Down

0 comments on commit 9c0437b

Please sign in to comment.