diff --git a/lib/Analysis/GRExprEngineInternalChecks.cpp b/lib/Analysis/GRExprEngineInternalChecks.cpp
index 13df89e..76d26dd 100644
--- a/lib/Analysis/GRExprEngineInternalChecks.cpp
+++ b/lib/Analysis/GRExprEngineInternalChecks.cpp
@@ -672,7 +672,6 @@
       return NULL;
 
     if (!StoreSite) {      
-      GRStateManager &StateMgr = BRC.getStateManager();
       const ExplodedNode<GRState> *Node = N, *Last = NULL;
 
       for ( ; Node ; Last = Node, Node = Node->getFirstPred()) {
@@ -686,7 +685,7 @@
               }
         }
         
-        if (StateMgr.GetSVal(Node->getState(), R) != V)
+        if (Node->getState()->getSVal(R) != V)
           break;
       }
 
diff --git a/lib/Analysis/GRState.cpp b/lib/Analysis/GRState.cpp
index 3217c4a..65db6a2 100644
--- a/lib/Analysis/GRState.cpp
+++ b/lib/Analysis/GRState.cpp
@@ -68,6 +68,22 @@
   return Mgr->getPersistentState(NewSt);    
 }
 
+SVal GRState::getSValAsScalarOrLoc(const MemRegion *R) const {
+  // We only want to do fetches from regions that we can actually bind
+  // values.  For example, SymbolicRegions of type 'id<...>' cannot
+  // have direct bindings (but their can be bindings on their subregions).
+  if (!R->isBoundable())
+    return UnknownVal();
+
+  if (const TypedRegion *TR = dyn_cast<TypedRegion>(R)) {
+    QualType T = TR->getValueType(Mgr->getContext());
+    if (Loc::IsLocType(T) || T->isIntegerType())
+      return getSVal(R);
+  }
+
+  return UnknownVal();
+}
+
 const GRState* GRStateManager::getInitialState() {
   GRState StateImpl(this, EnvMgr.getInitialEnvironment(), 
                     StoreMgr->getInitialStore(),
