Menu

#1736 SetEnvironmentVariable() currupts list

obsolete: 8.5a0
open
5
2005-11-03
2002-01-11
No

Win32 specific!

Use of SetEnvironmentVariable() by an extension or an
application that embeds Tcl, puts the libc maintained
environ list out-of-sync. This in turn puts Tcl's env
array out-of-sync as well.

Discussion

  • Jeffrey Hobbs

    Jeffrey Hobbs - 2002-02-25

    Logged In: YES
    user_id=72656

    This is why Tcl has the Tcl_PutEnv compatibility procedure
    for extension authors to use to keep in sync.

     
  • Jeffrey Hobbs

    Jeffrey Hobbs - 2002-02-25
    • status: open --> closed-invalid
     
  • David Gravereaux

    Logged In: YES
    user_id=7549

    but in places where this is out of your control,
    GetEnvironmentStrings() more accurately represents what the
    OS maintains.

     
  • David Gravereaux

    • milestone: 116090 --> obsolete: 8.5a0
    • assigned_to: hobbs --> davygrvy
    • status: closed-invalid --> open
     
  • David Gravereaux

    Logged In: YES
    user_id=7549

    This is not fixed, nor invalid. reopening.

     
  • David Gravereaux

    Logged In: YES
    user_id=7549

    writing sync problems:

    % tsetenv FOO baz
    % wgetenv FOO
    baz
    % set env(FOO)
    baz
    % getenv FOO <- blank return
    % wsetenv FOO pickle
    % set env(FOO)
    baz
    % getenv FOO
    %

    reading sync prolems:

    % set env(TEST) first
    first
    % load test
    % set env(TEST) second
    second
    % getenv TEST
    first
    % wgetenv TEST
    second
    % tgetenv TEST
    second

     
  • David Gravereaux

    test extension that shows the problems.

     
  • David Gravereaux

    Logged In: YES
    user_id=7549

    Just this, and everyone has the wrong answer:

    % getenv FOO
    % setenv FOO qwe
    % set env(FOO)
    baz
    % wgetenv FOO
    qwe
    % tgetenv FOO
    baz
    % wsetenv FOO asd <- system
    % tgetenv FOO
    baz <- tcl
    % getenv FOO
    qwe <- c-runtime
    %

     
  • Jeffrey Hobbs

    Jeffrey Hobbs - 2005-10-05

    Logged In: YES
    user_id=72656

    Hmmm, I just corrected this for unix with 979640. I'm not
    sure how related they are, as we rely on putenv solely for
    Windows.

     
  • David Gravereaux

    • assigned_to: davygrvy --> patthoyts