Explorar o código

Merge pull request #9821 from richardkchapman/hpcc17342-exceptionleak

HPCC-17342 Leaks of IException objects

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>
Gavin Halliday %!s(int64=8) %!d(string=hai) anos
pai
achega
b77d9bb452

+ 3 - 1
common/thorhelper/thorsoapcall.cpp

@@ -290,7 +290,9 @@ private:
             catch (IException *e)
             catch (IException *e)
             {
             {
                 StringBuffer s;
                 StringBuffer s;
-                throw MakeStringException(ROXIE_ABORT_EVENT, "%s", e->errorMessage(s).str());
+                e->errorMessage(s);
+                e->Release();
+                throw MakeStringException(ROXIE_ABORT_EVENT, "%s", s.str());
             }
             }
         }
         }
     }
     }

+ 1 - 0
ecl/eclagent/eclgraph.cpp

@@ -1597,6 +1597,7 @@ void EclAgent::executeThorGraph(const char * graphName)
             thorMaster.getUrlStr(s);
             thorMaster.getUrlStr(s);
             s.append("; (").append(e->errorCode()).append(", ");
             s.append("; (").append(e->errorCode()).append(", ");
             e->errorMessage(s).append(")");
             e->errorMessage(s).append(")");
+            e->Release();
             throw MakeStringExceptionDirect(-1, s.str());
             throw MakeStringExceptionDirect(-1, s.str());
         }
         }
         ThorReplyCodes replyCode;
         ThorReplyCodes replyCode;

+ 1 - 0
roxie/ccd/ccdcontext.cpp

@@ -2318,6 +2318,7 @@ protected:
                 thorMaster.getUrlStr(s);
                 thorMaster.getUrlStr(s);
                 s.append("; (").append(e->errorCode()).append(", ");
                 s.append("; (").append(e->errorCode()).append(", ");
                 e->errorMessage(s).append(")");
                 e->errorMessage(s).append(")");
+                e->Release();
                 throw MakeStringExceptionDirect(-1, s.str());
                 throw MakeStringExceptionDirect(-1, s.str());
             }
             }
             ThorReplyCodes replyCode;
             ThorReplyCodes replyCode;