OSDN Git Service

gecko vbuf backend: Yet more cleanup.
authorJames Teh <jamie@jantrid.net>
Wed, 29 Aug 2012 01:24:58 +0000 (11:24 +1000)
committerJames Teh <jamie@jantrid.net>
Wed, 29 Aug 2012 01:24:58 +0000 (11:24 +1000)
nvdaHelper/vbufBackends/gecko_ia2/gecko_ia2.cpp

index 56e76f8..81d75a7 100755 (executable)
@@ -623,17 +623,21 @@ VBufStorage_fieldNode_t* GeckoVBufBackend_t::fillVBuf(IAccessible2* pacc, VBufSt
                                childCount=0;\r
                        }\r
                        for(long i=0;i<childCount;++i) {\r
-                               if(varChildren[i].vt==VT_DISPATCH) {\r
-                                       IAccessible2* childPacc=NULL;\r
-                                       varChildren[i].pdispVal->QueryInterface(IID_IAccessible2,(void**)&childPacc);\r
-                                       if(childPacc) {\r
-                                               if(tempNode=this->fillVBuf(childPacc,buffer,parentNode,previousNode,paccTable,paccTable2,tableID))\r
-                                                       previousNode=tempNode;\r
-                                               else\r
-                                                       LOG_DEBUG(L"Error in calling fillVBuf");\r
-                                               childPacc->Release();\r
-                                       }\r
+                               if (varChildren[i].vt != VT_DISPATCH) {\r
+                                       VariantClear(&(varChildren[i]));\r
+                                       continue;\r
+                               }\r
+                               IAccessible2* childPacc=NULL;\r
+                               varChildren[i].pdispVal->QueryInterface(IID_IAccessible2,(void**)&childPacc);\r
+                               if (!childPacc) {\r
+                                       VariantClear(&(varChildren[i]));\r
+                                       continue;\r
                                }\r
+                               if(tempNode=this->fillVBuf(childPacc,buffer,parentNode,previousNode,paccTable,paccTable2,tableID))\r
+                                       previousNode=tempNode;\r
+                               else\r
+                                       LOG_DEBUG(L"Error in calling fillVBuf");\r
+                               childPacc->Release();\r
                                VariantClear(&(varChildren[i]));\r
                        }\r
                        free(varChildren);\r