diff --git a/maestro/misc.c b/maestro/misc.c
index 096a5428e695ca894cb7e71921857f50424f0661..67b743b100a44558b1546bde66490557401970ef 100644
--- a/maestro/misc.c
+++ b/maestro/misc.c
@@ -1,7 +1,7 @@
 #include "maestro/i_misc.h"
 #include "maestro/logging.h"
 
-#ifndef _POSIZE_C_SOURCE
+#ifndef _POSIX_C_SOURCE
 #define _POSIX_C_SOURCE 1
 #endif
 #include <limits.h>
diff --git a/maestro/ofi.c b/maestro/ofi.c
index c61d1d902cf3056536f0813d7f6e6fb4d7da4ef4..91806e75f47d8aed3a72a62968154b6d051d1420 100644
--- a/maestro/ofi.c
+++ b/maestro/ofi.c
@@ -2715,7 +2715,10 @@ mstro_ofi__check_and_handle_cq(struct mstro_endpoint *ep,
     }
 
     if(re_post) {
-      ; /* fresh receive will be posted later, and slot messages have no completion watchers */
+       /* fresh receive has been posted earlier, and slot messages have no completion watchers */
+      DEBUG("slot message handled, cleaning up envelope and ctx\n");
+      mstro_msg_envelope_free(ctx->msg);
+      status = mstro_ofi__msg_context_destroy(ctx);
     } else {
       /* other recv */
       DEBUG("non-slot message, cleaning up\n");