diff --git a/Analysis/GRExprEngine.cpp b/Analysis/GRExprEngine.cpp
index c0f53fe..1dae433 100644
--- a/Analysis/GRExprEngine.cpp
+++ b/Analysis/GRExprEngine.cpp
@@ -148,8 +148,8 @@
       break;
 
     case RVal::UnknownKind:
-      builder.generateNode(PrevState, true);
-      builder.generateNode(PrevState, false);
+      builder.generateNode(MarkBranch(PrevState, Term, true), true);
+      builder.generateNode(MarkBranch(PrevState, Term, false), false);
       return;
       
     case RVal::UninitializedKind: {      
@@ -368,6 +368,13 @@
     
     X = GetBlkExprRVal(St, Ex);
     
+    // Handle uninitialized values.
+    
+    if (X.isUninit()) {
+      Nodify(Dst, B, Pred, SetBlkExprRVal(St, B, X));
+      return;
+    }
+    
     // We took the RHS.  Because the value of the '&&' or '||' expression must
     // evaluate to 0 or 1, we must assume the value of the RHS evaluates to 0
     // or 1.  Alternatively, we could take a lazy approach, and calculate this
diff --git a/Analysis/ValueState.cpp b/Analysis/ValueState.cpp
index 7f3e733..b892fd6 100644
--- a/Analysis/ValueState.cpp
+++ b/Analysis/ValueState.cpp
@@ -336,12 +336,16 @@
   
   ValueState::ExprBindingsTy::TreeTy* T = St->SubExprBindings.SlimFind(E);
   
-  return T ? T->getValue().second : GetBlkExprRVal(St, E);
+  if (T)
+    return T->getValue().second;
+  
+  T = St->BlockExprBindings.SlimFind(E);
+  return T ? T->getValue().second : UnknownVal();
 }
 
 RVal ValueStateManager::GetBlkExprRVal(ValueState St, Expr* E) {
   
-  assert (!isa<ParenExpr>(E));
+  E = E->IgnoreParens();
   
   switch (E->getStmtClass()) {
     case Stmt::CharacterLiteralClass: {
