Removed debugging hacks. Always call lt_dlinit
and add a call to lt_dlexit to the destructor.
Showing
1 changed file
with
4 additions
and
12 deletions
... | @@ -29,30 +29,21 @@ | ... | @@ -29,30 +29,21 @@ |
29 | 29 | ||
30 | typedef int (*sieve_module_init_t) __PMT((sieve_machine_t mach)); | 30 | typedef int (*sieve_module_init_t) __PMT((sieve_machine_t mach)); |
31 | 31 | ||
32 | static int inited = 0; | ||
33 | |||
34 | static void | 32 | static void |
35 | _free_loaded_module (void *data) | 33 | _free_loaded_module (void *data) |
36 | { | 34 | { |
37 | lt_dlclose ((lt_dlhandle)data); | 35 | lt_dlclose ((lt_dlhandle)data); |
38 | } | 36 | lt_dlexit (); |
39 | |||
40 | int wd () | ||
41 | { | ||
42 | int volatile _s=0; | ||
43 | while (!_s); | ||
44 | } | 37 | } |
45 | 38 | ||
46 | static lt_dlhandle | 39 | static lt_dlhandle |
47 | load_module (sieve_machine_t mach, const char *name) | 40 | load_module (sieve_machine_t mach, const char *name) |
48 | { | 41 | { |
49 | lt_dlhandle handle; | 42 | lt_dlhandle handle; |
50 | if (!inited) | 43 | |
51 | { | ||
52 | if (lt_dlinit ()) | 44 | if (lt_dlinit ()) |
53 | return NULL; | 45 | return NULL; |
54 | inited++; | 46 | |
55 | } | ||
56 | handle = lt_dlopenext (name); | 47 | handle = lt_dlopenext (name); |
57 | if (handle) | 48 | if (handle) |
58 | { | 49 | { |
... | @@ -74,6 +65,7 @@ load_module (sieve_machine_t mach, const char *name) | ... | @@ -74,6 +65,7 @@ load_module (sieve_machine_t mach, const char *name) |
74 | if (!handle) | 65 | if (!handle) |
75 | { | 66 | { |
76 | sieve_error (mach, "%s", lt_dlerror ()); | 67 | sieve_error (mach, "%s", lt_dlerror ()); |
68 | lt_dlexit (); | ||
77 | } | 69 | } |
78 | return handle; | 70 | return handle; |
79 | } | 71 | } | ... | ... |
-
Please register or sign in to post a comment