diff --git a/src/configure.in b/src/configure.in
index e0d3c1a322c9da798312cb73529ad56301706f0b..ac9fe0a2cad9b8504c42ce4e3fc7570a19107d65 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -1,4 +1,4 @@
-# $Id: configure.in,v 1.22 1996/11/19 10:04:30 neotron Exp $
+# $Id: configure.in,v 1.23 1996/11/22 06:13:43 hubbe Exp $
 
 AC_INIT(interpret.c)
 
@@ -314,8 +314,6 @@ AC_CHECK_TYPE(time_t,INT32)
 
 dnl AC_CHECK_LIB(PW, alloca)
 
-dnl AC_CHECK_LIB(crypt, crypt)
-
 AC_CHECK_LIB(m, floor)
 AC_CHECK_LIB(dl, dlopen)
 
@@ -324,9 +322,6 @@ if test "${ac_cv_lib_m}" = "no" -a "${pike_cv_sys_os}" = "Linux"; then
   LIBS="${LIBS} -lc -lm"
 fi
 
-AC_CHECK_LIB(crypt, crypt)
-
-
 ########################################################################
 
 if test x$with_threads = xyes ; then
@@ -434,6 +429,12 @@ AC_CHECK_FUNCS(
  dlsym \
 )
 
+if test $ac_cv_func_crypt$ac_cv_func__crypt = nono ; then
+  AC_CHECK_LIB(crypt,crypt,[LIBS="${LIBS} -lcrypt" ; AC_DEFINE(HAVE_CRYPT);])
+fi
+
+
+
 AC_STRUCT_TM
 
 #############################################################################
diff --git a/src/gc.c b/src/gc.c
index d993c89d0bd448fc0cd6c0b10ac5abc5616c4416..2c370c371ab07e9fa19c349a68b5427979dfd4db 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -209,8 +209,11 @@ void do_gc()
   if(in_gc) return;
   in_gc=1;
 
-  remove_callback(gc_evaluator_callback);
-  gc_evaluator_callback=0;
+  if(gc_evaluator_callback)
+  {
+    remove_callback(gc_evaluator_callback);
+    gc_evaluator_callback=0;
+  }
 
   tmp2=num_objects;