diff --git a/rts/Interpreter.c b/rts/Interpreter.c
index a2f0b5898e0b38720d90af2330133e6e22c081a0..a22e966ff3aba4a18c7c31f5fe44f4c4c316be4d 100644
--- a/rts/Interpreter.c
+++ b/rts/Interpreter.c
@@ -285,7 +285,7 @@ interpretBCO (Capability* cap)
     // that these entities are non-aliasable.
     register StgPtr       Sp;    // local state -- stack pointer
     register StgPtr       SpLim; // local state -- stack lim pointer
-    register StgClosure   *tagged_obj = 0, *obj;
+    register StgClosure   *tagged_obj = 0, *obj = NULL;
     uint32_t n, m;
 
     LOAD_THREAD_STATE();
diff --git a/rts/sm/MarkWeak.c b/rts/sm/MarkWeak.c
index 691e56af5f3c2e45ef7bcc6ab45b7d6b52bac468..9a077b3d146c4d1c63d24dcd807f209f58e39030 100644
--- a/rts/sm/MarkWeak.c
+++ b/rts/sm/MarkWeak.c
@@ -364,7 +364,7 @@ static void tidyThreadList (generation *gen)
 static void checkWeakPtrSanity(StgWeak *hd, StgWeak *tl)
 {
     StgWeak *w, *prev;
-    for (w = hd; w != NULL; prev = w, w = w->link) {
+    for (prev = NULL, w = hd; w != NULL; prev = w, w = w->link) {
         ASSERT(INFO_PTR_TO_STRUCT(UNTAG_CLOSURE((StgClosure*)w)->header.info)->type == WEAK
             || UNTAG_CLOSURE((StgClosure*)w)->header.info == &stg_DEAD_WEAK_info);
         checkClosure((StgClosure*)w);