diff --git a/src/encode.c b/src/encode.c
index b20bce0cacfb61e2bc992fe03a79624358521f69..a040e3c9319e21939de3b8b62476d8d5eb449cbe 100644
--- a/src/encode.c
+++ b/src/encode.c
@@ -24,7 +24,7 @@
 #include "stuff.h"
 #include "version.h"
 
-RCSID("$Id: encode.c,v 1.31 1999/04/12 02:24:14 hubbe Exp $");
+RCSID("$Id: encode.c,v 1.32 1999/07/19 00:34:58 hubbe Exp $");
 
 #ifdef _AIX
 #include <net/nh.h>
@@ -140,8 +140,7 @@ static void code_number(INT32 num, struct encode_data *data)
 #ifdef _REENTRANT
 static void do_enable_threads(void)
 {
-  if(!--threads_disabled)
-    co_broadcast(&threads_disabled_change);
+  exit_threads_disable(NULL);
 }
 #endif
 
@@ -931,7 +930,7 @@ static void decode_value2(struct decode_data *data)
 
 #ifdef _REENTRANT
 	  ONERROR err;
-	  threads_disabled++;
+	  low_init_threads_disable();
 	  SET_ONERROR(err, do_enable_threads, 0);
 #endif
 
@@ -1102,8 +1101,7 @@ static void decode_value2(struct decode_data *data)
 
 #ifdef _REENTRANT
 	  UNSET_ONERROR(err);
-	  if(!--threads_disabled)
-	    co_broadcast(&threads_disabled_change);
+	  exit_threads_disable(NULL);
 #endif
 	  return;
 	}