diff --git a/paste.c b/paste.c
index 7cbbbfb..cf81922 100644
--- a/paste.c
+++ b/paste.c
@@ -130,11 +130,15 @@ paste_replace(struct paste_stack *ps, u_int idx, char *data, size_t size)
 {
 	struct paste_buffer	*pb;
 
-	if (size == 0)
+	if (size == 0) {
+		free(data);
 		return (0);
+	}
 
-	if (idx >= ARRAY_LENGTH(ps))
+	if (idx >= ARRAY_LENGTH(ps)) {
+		free(data);
 		return (-1);
+	}
 
 	pb = ARRAY_ITEM(ps, idx);
 	free(pb->data);
