diff options
Diffstat (limited to 'devel/pth/patches/patch-ag')
-rw-r--r-- | devel/pth/patches/patch-ag | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/devel/pth/patches/patch-ag b/devel/pth/patches/patch-ag new file mode 100644 index 00000000000..acce8bca0c7 --- /dev/null +++ b/devel/pth/patches/patch-ag @@ -0,0 +1,82 @@ +$NetBSD: patch-ag,v 1.1 2002/08/01 13:36:09 skrll Exp $ + +--- pth_lib.c.orig Sun Jan 27 11:03:40 2002 ++++ pth_lib.c +@@ -37,25 +37,21 @@ long pth_version(void) + + /* implicit initialization support */ + intern int pth_initialized = FALSE; ++intern int pth_explicit_initialize = FALSE; ++ + #if cpp + #define pth_implicit_init() \ + if (!pth_initialized) \ +- pth_init(); ++ pth__init(); + #endif + +-/* initialize the package */ +-int pth_init(void) ++intern int pth__init(void) + { + pth_attr_t t_attr; + +- /* support for implicit initialization calls +- and to prevent multiple explict initialization, too */ +- if (pth_initialized) +- return_errno(FALSE, EPERM); +- else +- pth_initialized = TRUE; ++ pth_initialized = TRUE; + +- pth_debug1("pth_init: enter"); ++ pth_debug1("pth__init: enter"); + + /* initialize the scheduler */ + pth_scheduler_init(); +@@ -105,10 +101,28 @@ int pth_init(void) + pth_mctx_switch(&pth_main->mctx, &pth_sched->mctx); + + /* came back, so let's go home... */ +- pth_debug1("pth_init: leave"); ++ pth_debug1("pth__init: leave"); + return TRUE; + } + ++/* initialize the package */ ++int pth_init(void) ++{ ++ int rv; ++ ++ /* support for implicit initialization calls ++ and to prevent multiple explict initialization, too */ ++ if (pth_initialized) { ++ /* if we've already explicitly initialized then error */ ++ if (pth_explicit_initialize) ++ return_errno(FALSE, EPERM); ++ } else { ++ rv = pth__init(); ++ pth_explicit_initialize = TRUE; ++ return rv; ++ } ++} ++ + /* kill the package internals */ + int pth_kill(void) + { +@@ -118,6 +132,7 @@ int pth_kill(void) + pth_thread_cleanup(pth_main); + pth_scheduler_kill(); + pth_initialized = FALSE; ++ pth_explicit_initialize = FALSE; + pth_tcb_free(pth_sched); + pth_tcb_free(pth_main); + pth_debug1("pth_kill: leave"); +@@ -182,6 +197,7 @@ static void pth_spawn_trampoline(void) + /* no return! */ + abort(); + } ++ + pth_t pth_spawn(pth_attr_t attr, void *(*func)(void *), void *arg) + { + pth_t t; |