diff --git a/src/mapping.c b/src/mapping.c
index b75ed0e42bf2db648bacca640035cd1d041a923d..25ad74860402cc9e7e108e69f2acf13de963ac87 100644
--- a/src/mapping.c
+++ b/src/mapping.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: mapping.c,v 1.81 2000/04/30 23:15:16 hubbe Exp $");
+RCSID("$Id: mapping.c,v 1.82 2000/05/01 02:10:30 hubbe Exp $");
 #include "main.h"
 #include "object.h"
 #include "mapping.h"
@@ -1363,9 +1363,10 @@ struct mapping *add_mappings(struct svalue *argp, INT32 args)
 #endif
 
   /* FIXME: need locking! */
-  if(argp[0].u.mapping->refs == 1)
+  if(argp[0].u.mapping->refs == 1 &&
+     !argp[0].u.mapping->data->hardlinks)
   {
-    ret=argp[0].u.mapping;
+    add_ref( ret=argp[0].u.mapping );
     d=1;
   }else{
     ret=allocate_mapping(MAP_SLOTS(e));