diff --git a/src/svalue.c b/src/svalue.c
index d2032aba1fa60f10c1ea1ea6710430ac238f2cc6..5a1852951e77103360678b38d3b49eee8f7e1417 100644
--- a/src/svalue.c
+++ b/src/svalue.c
@@ -19,11 +19,12 @@
 #include "interpret.h"
 #include "gc.h"
 #include "pike_macros.h"
+#include "pike_types.h"
 #include <ctype.h>
 #include "queue.h"
 #include "bignum.h"
 
-RCSID("$Id: svalue.c,v 1.81 2000/07/04 00:43:57 mast Exp $");
+RCSID("$Id: svalue.c,v 1.82 2000/07/06 22:07:41 grubba Exp $");
 
 struct svalue dest_ob_zero = { T_INT, 0 };
 
@@ -687,6 +688,11 @@ int low_is_equal(struct svalue *a,
     case T_PROGRAM:
       return 0;
 
+    case T_TYPE:
+      if (a->u.string == b->u.string) return 1;
+      return pike_types_le(a->u.string, b->u.string) &&
+	pike_types_le(b->u.string, a->u.string);
+
     case T_OBJECT:
       return object_equal_p(a->u.object, b->u.object, p);