diff --git a/src/encode.c b/src/encode.c
index 3d7aced0da4f15d79962efe99325e41eb5b69271..be4ca4e7abca85b8fa4489ced528ca05dd822ab8 100644
--- a/src/encode.c
+++ b/src/encode.c
@@ -1958,6 +1958,7 @@ void f_encode_value(INT32 args)
 		 "The codec may not be a subtyped object yet.\n");
     }
     data->codec=Pike_sp[1-args].u.object;
+    add_ref (data->codec);
   }else{
     data->codec=NULL;
   }
@@ -2037,6 +2038,7 @@ void f_encode_value_canonic(INT32 args)
 		 "The codec may not be a subtyped object yet.\n");
     }
     data->codec=Pike_sp[1-args].u.object;
+    add_ref (data->codec);
   }else{
     data->codec=NULL;
   }