pull up r18600 from trunk
authorTom Yu <tlyu@mit.edu>
Mon, 25 Sep 2006 21:06:43 +0000 (21:06 +0000)
committerTom Yu <tlyu@mit.edu>
Mon, 25 Sep 2006 21:06:43 +0000 (21:06 +0000)
 r18600@cathode-dark-space:  jaltman | 2006-09-20 22:43:12 -0400
 ticket: new
 subject: windows thread support frees thread local storage after TlsSetValue
 tags: pullup

   threads.c: The return value of TlsSetValue is non-zero on
                    success.  As a result of misinterpreting the
                    return value, the memory set in TLS is then freed.
     A subsequent call to TlsGetValue returns the
     invalid pointer.

ticket: 4305

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-4@18611 dc483132-0cff-0310-8789-dd5450dbe970

src/util/support/threads.c

index b9fd3c116faa1be78ac9c4a9bd16aebdc23393ed..eb5fd2ff62749e647ae84ad4fa31c3cfd75003cf 100644 (file)
@@ -275,9 +275,9 @@ int k5_setspecific (k5_key_t keynum, void *value)
        /* add to global linked list */
        /*      t->next = 0; */
        err = TlsSetValue(tls_idx, t);
-       if (err) {
+       if (!err) {
            free(t);
-           return err;
+           return GetLastError();
        }
     }