浏览代码

Merge pull request #5230 from ghalliday/issue10552

HPCC-10552 First round of coverity related changes

Reviewed-By: Jake Smith <jake.smith@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 11 年之前
父节点
当前提交
089b8326f0
共有 58 个文件被更改,包括 137 次插入173 次删除
  1. 11 3
      common/deftype/defvalue.cpp
  2. 1 0
      common/deftype/defvalue.ipp
  3. 1 1
      common/thorhelper/thortalgo.cpp
  4. 2 0
      dali/base/dautils.hpp
  5. 1 1
      dali/dalidiag/dalidiag.cpp
  6. 1 0
      dali/datest/datest.cpp
  7. 0 4
      dali/datest/dfuwutest.cpp
  8. 3 0
      dali/dfuXRefLib/dfuxreflib.cpp
  9. 1 1
      dali/sasha/saxref.cpp
  10. 6 2
      deployment/deployutils/deployutils.cpp
  11. 1 1
      ecl/eclagent/eclagent.ipp
  12. 6 4
      ecl/eclagent/eclgraph.cpp
  13. 3 0
      ecl/eclplus/eclplus.cpp
  14. 0 1
      ecl/hql/hqlcollect.cpp
  15. 2 2
      ecl/hql/hqlexpr.cpp
  16. 1 1
      ecl/hql/hqlfold.cpp
  17. 0 11
      ecl/hql/hqlgram2.cpp
  18. 1 11
      ecl/hql/hqlopt.cpp
  19. 1 0
      ecl/hql/hqlrepository.cpp
  20. 0 5
      ecl/hql/hqltrans.cpp
  21. 5 13
      ecl/hqlcpp/hqlcpp.cpp
  22. 2 6
      ecl/hqlcpp/hqlcppds.cpp
  23. 2 7
      ecl/hqlcpp/hqlcse.cpp
  24. 5 10
      ecl/hqlcpp/hqlcset.cpp
  25. 13 23
      ecl/hqlcpp/hqlhtcpp.cpp
  26. 0 1
      ecl/hqlcpp/hqliproj.cpp
  27. 0 3
      ecl/hqlcpp/hqlresource.cpp
  28. 4 4
      ecl/hqlcpp/hqlsource.cpp
  29. 1 1
      ecl/hqlcpp/hqltcppc.cpp
  30. 0 3
      ecl/hqlcpp/hqltomita.cpp
  31. 0 7
      ecl/hqlcpp/hqlttcpp.cpp
  32. 1 1
      ecl/hqlcpp/hqlwcpp.cpp
  33. 1 2
      ecl/hthor/hthorkey.cpp
  34. 3 3
      esp/bindings/http/platform/httpprot.cpp
  35. 1 1
      esp/bindings/http/platform/httptransport.cpp
  36. 2 2
      esp/bindings/http/platform/mime.cpp
  37. 2 2
      esp/services/WsDeploy/WsDeployService.cpp
  38. 1 0
      esp/test/httptest/httptest.cpp
  39. 1 0
      esp/tools/soapplus/http.cpp
  40. 2 0
      esp/tools/soapplus/xmldiff.cpp
  41. 3 0
      roxie/ccd/ccdcontext.cpp
  42. 2 0
      roxie/roxiemem/roxiemem.cpp
  43. 1 1
      roxie/udplib/udptrr.cpp
  44. 1 0
      roxie/udplib/uttest.cpp
  45. 8 20
      rtl/eclrtl/eclrtl.cpp
  46. 1 1
      system/jlib/jmisc.cpp
  47. 7 1
      system/jlib/jsocket.cpp
  48. 1 1
      system/jlib/jutil.cpp
  49. 1 0
      system/mp/mpbase.cpp
  50. 4 4
      system/security/zcrypt/base64.cpp
  51. 1 1
      system/security/zcrypt/unzip.c
  52. 1 0
      system/security/zcrypt/zip.c
  53. 2 2
      thorlcr/activities/merge/thmerge.cpp
  54. 0 2
      thorlcr/thorutil/thormisc.cpp
  55. 1 1
      tools/backupnode/backupnode2.cpp
  56. 5 0
      tools/esdlcmd-xml/esdlcomp.cpp
  57. 8 1
      tools/hidl/hidlcomp.cpp
  58. 2 1
      tools/start-stop-daemon/start-stop-daemon.c

+ 11 - 3
common/deftype/defvalue.cpp

@@ -446,7 +446,7 @@ void MemoryValue::deserialize(MemoryBuffer &src)
     void *mem = checked_malloc(size, DEFVALUE_MALLOC_FAILED);
     assertex(mem);
     src.read(size, mem);
-    val.set(size, mem);
+    val.setOwn(size, mem);
 }
 
 int MemoryValue::rangeCompare(ITypeInfo * targetType)
@@ -801,6 +801,12 @@ void UnicodeAttr::set(UChar const * _text, unsigned _len)
     text[_len] = 0x0000;
 }
 
+void UnicodeAttr::setown(UChar * _text)
+{
+    free(text);
+    text = _text;
+}
+
 VarUnicodeValue::VarUnicodeValue(unsigned len, const UChar * v, ITypeInfo * _type) : CValue(_type)
 {
     unsigned typeLen = type->getStringLen();
@@ -958,7 +964,7 @@ void VarUnicodeValue::deserialize(MemoryBuffer & src)
     src.read(len);
     UChar * buff = (UChar *) checked_malloc(len*2, DEFVALUE_MALLOC_FAILED);
     src.read(len*2, buff);
-    val.set(buff, len);
+    val.setown(buff);
 }
 
 IValue *createVarUnicodeValue(char const * value, unsigned size, char const * locale, bool utf8, bool unescape)
@@ -2914,7 +2920,7 @@ IValue * substringValue(IValue * v, IValue * lower, IValue * higher)
     unsigned low = lower ? (unsigned)lower->getIntValue() : 0;
     unsigned high = higher ? (unsigned)higher->getIntValue() : srcLen;
 
-    unsigned retLen;
+    unsigned retLen = 0;
     void * retPtr;
     ITypeInfo * retType = NULL;
     switch (type->getTypeCode())
@@ -2942,6 +2948,8 @@ IValue * substringValue(IValue * v, IValue * lower, IValue * higher)
     case type_utf8:
         rtlUtf8SubStrFTX(retLen, *(char * *)&retPtr, srcLen, (const char *)raw, low, high);
         break;
+    default:
+        UNIMPLEMENTED;
     }
 
     if (retType == NULL)

+ 1 - 0
common/deftype/defvalue.ipp

@@ -158,6 +158,7 @@ public:
     UChar const * get(void) const { return text; }
     size32_t length() const { return text ? rtlUnicodeStrlen(text) : 0; }
     void set(UChar const * _text, unsigned _len);
+    void setown(UChar * _text);
 
 private:
     UChar * text;

+ 1 - 1
common/thorhelper/thortalgo.cpp

@@ -177,7 +177,7 @@ void ProductionFeatureInfo::deserialize(MemoryBuffer & in)
     extra.deserialize(in);
     unsigned numActions;
     in.read(numActions);
-    for (unsigned i = 0; i < numActions; numActions++)
+    for (unsigned i = 0; i < numActions; i++)
     {
         FeatureAction & cur = * new FeatureAction;
         cur.deserialize(in);

+ 2 - 0
dali/base/dautils.hpp

@@ -219,6 +219,7 @@ struct da_decl TransactionLog
         va_start(args, formatMsg);
         msg.append(" ");
         msg.valist_appendf(formatMsg, args);
+        va_end(args);
         log();
     }
     inline void markExtra()
@@ -231,6 +232,7 @@ struct da_decl TransactionLog
         va_list args;
         va_start(args, formatMsg);
         msg.valist_appendf(formatMsg, args);
+        va_end(args);
         markExtra();
     }
 };

+ 1 - 1
dali/dalidiag/dalidiag.cpp

@@ -194,7 +194,7 @@ void timeQorSDS(bool timeq)
             }   
             a /= s;
             if (last10av>0.0) {
-                if (a>last10av+MININC) last10inc='+'; else if (a<last10av-MININC) last10inc='-'; else last100inc=' ';
+                if (a>last10av+MININC) last10inc='+'; else if (a<last10av-MININC) last10inc='-'; else last10inc=' ';
             }
             last10av = a;
             last10max = m;

+ 1 - 0
dali/datest/datest.cpp

@@ -929,6 +929,7 @@ void TestRemoteFile(unsigned part,unsigned of)
 
     infile->Release();
     outfile->Release();
+    free(buffer);
 }
 
 

+ 0 - 4
dali/datest/dfuwutest.cpp

@@ -39,8 +39,6 @@ void testProgressUpdate()
 
 void testAbort(const char *wuid)
 {
-    getDFUWorkUnitFactory();
-
     Owned<IDFUWorkUnitFactory> factory = getDFUWorkUnitFactory();
     Owned<IConstDFUWorkUnit> wu = factory->openWorkUnit(wuid,false);
     if (wu) {
@@ -58,8 +56,6 @@ StringBuffer& constructFileMask(const char* filename, StringBuffer& filemask)
 
 void testProgressMonitor(const char *wuid)
 {
-    getDFUWorkUnitFactory();
-
     Owned<IDFUWorkUnitFactory> factory = getDFUWorkUnitFactory();
     Owned<IConstDFUWorkUnit> wu = factory->openWorkUnit(wuid,false);
     class cProgressMon: public CInterface, implements IDFUprogressSubscriber

+ 3 - 0
dali/dfuXRefLib/dfuxreflib.cpp

@@ -1114,6 +1114,7 @@ public:
             }
             out.append('[').append(pna.item(sorted[i2])+1).append(']');
         }
+        delete [] sorted;
     }
 
     IPropertyTree *addFileBranch(IPropertyTree *dst,unsigned flags)
@@ -1562,6 +1563,8 @@ void loadFromDFS(CXRefManagerBase &manager,IGroup *grp,unsigned numdirs,const ch
                                     oldentry->crosslink.setown(entry);
 #endif
                                 }
+                                else
+                                    entry->Release();
                             }
                             else {
                                 manager.filemap.add(*entry);

+ 1 - 1
dali/sasha/saxref.cpp

@@ -247,7 +247,7 @@ struct cDirDesc
     {
         size32_t sl = strlen(_name);
         if (sl>255) {
-            WARNLOG(LOGPFX "Directory name %s longer than 255 chars, truncating",name);
+            WARNLOG(LOGPFX "Directory name %s longer than 255 chars, truncating",_name);
             sl = 255;
         }
         name = (byte *)mem.alloc(sl+1);

+ 6 - 2
deployment/deployutils/deployutils.cpp

@@ -2783,7 +2783,7 @@ const char* getUniqueName(const IPropertyTree* pEnv, StringBuffer& sName, const
     StringBuffer num(sName);
     char* pszNum = num.detach();
 
-    char *token;
+    char *token = NULL;
     j_strtok_r(pszNum, "_", &token);
 
     if (strspn(token, "0123456789") == strlen(token))
@@ -2797,6 +2797,8 @@ const char* getUniqueName(const IPropertyTree* pEnv, StringBuffer& sName, const
       if (len > 0 && endsWith(sPrefix.str(), "_")) //ends with '_'
         sPrefix = sPrefix.remove(sPrefix.length() - 1, 1); //lose it
     }
+
+    free(pszNum);
   }
 
   StringBuffer xpath;
@@ -2826,7 +2828,7 @@ const char* getUniqueName2(const IPropertyTree* pEnv, StringBuffer& sName, const
     StringBuffer num(sName);
     char* pszNum = num.detach();
 
-    char *token;
+    char *token = NULL;
     j_strtok_r(pszNum, "_", &token);
 
     if (strspn(token, "0123456789") == strlen(token))
@@ -2840,6 +2842,8 @@ const char* getUniqueName2(const IPropertyTree* pEnv, StringBuffer& sName, const
       if (len > 0 && endsWith(sPrefix.str(), "_")) //ends with '_'
         sPrefix = sPrefix.remove(sPrefix.length() - 1, 1); //lose it
     }
+
+    free(pszNum);
   }
 
   StringBuffer xpath;

+ 1 - 1
ecl/eclagent/eclagent.ipp

@@ -939,7 +939,7 @@ public:
     EclSubGraph(IAgentContext & _agent, EclGraph &parent, EclSubGraph * _owner, unsigned subGraphSeqNo, bool enableProbe, CHThorDebugContext * _debugContext, IProbeManager * _probeManager);
     IMPLEMENT_IINTERFACE
 
-    void createFromXGMML(EclGraph * graph, ILoadedDllEntry * dll, IPropertyTree * xgmml, unsigned * subGraphSeqNo, EclSubGraph * resultsGraph);
+    void createFromXGMML(EclGraph * graph, ILoadedDllEntry * dll, IPropertyTree * xgmml, unsigned & subGraphSeqNo, EclSubGraph * resultsGraph);
     void execute(const byte * parentExtract);
     void executeChild(const byte * parentExtract, IHThorGraphResults * results, IHThorGraphResults * _graphLoopResults);
     void executeLibrary(const byte * parentExtract, IHThorGraphResults * results);

+ 6 - 4
ecl/eclagent/eclgraph.cpp

@@ -379,6 +379,8 @@ bool EclGraphElement::alreadyUpToDate(IAgentContext & agent)
             helper->getUpdateCRCs(eclCRC, totalCRC);
             break;
         }
+    default:
+        UNIMPLEMENTED;
     }
 
     Owned<ILocalOrDistributedFile> ldFile = agent.resolveLFN(filename.get(), "Read", true, false, false);
@@ -776,7 +778,7 @@ EclSubGraph::EclSubGraph(IAgentContext & _agent, EclGraph & _parent, EclSubGraph
     isChildGraph = false;
 }
 
-void EclSubGraph::createFromXGMML(EclGraph * graph, ILoadedDllEntry * dll, IPropertyTree * node, unsigned * subGraphSeqNo, EclSubGraph * resultsGraph)
+void EclSubGraph::createFromXGMML(EclGraph * graph, ILoadedDllEntry * dll, IPropertyTree * node, unsigned & subGraphSeqNo, EclSubGraph * resultsGraph)
 {
     xgmml.set(node->queryPropTree("att/graph"));
 
@@ -803,9 +805,9 @@ void EclSubGraph::createFromXGMML(EclGraph * graph, ILoadedDllEntry * dll, IProp
         {
             Owned<IProbeManager> childProbe;
             if (probeManager)
-                childProbe.setown(probeManager->startChildGraph(*subGraphSeqNo, NULL));
+                childProbe.setown(probeManager->startChildGraph(subGraphSeqNo, NULL));
 
-            Owned<EclSubGraph> subgraph = new EclSubGraph(*agent, *graph, this, *subGraphSeqNo++, probeEnabled, debugContext, probeManager);
+            Owned<EclSubGraph> subgraph = new EclSubGraph(*agent, *graph, this, subGraphSeqNo++, probeEnabled, debugContext, probeManager);
             subgraph->createFromXGMML(graph, dll, &cur, subGraphSeqNo, resultsGraph);
             if (probeManager)
                 probeManager->endChildGraph(childProbe, NULL);
@@ -1134,7 +1136,7 @@ void EclGraph::createFromXGMML(ILoadedDllEntry * dll, IPropertyTree * xgmml, boo
             childProbe.setown(probeManager->startChildGraph(subGraphSeqNo, NULL));
 
         Owned<EclSubGraph> subgraph = new EclSubGraph(*agent, *this, NULL, subGraphSeqNo++, enableProbe, debugContext, probeManager);
-        subgraph->createFromXGMML(this, dll, &iter->query(), &subGraphSeqNo, NULL);
+        subgraph->createFromXGMML(this, dll, &iter->query(), subGraphSeqNo, NULL);
         if (probeManager)
             probeManager->endChildGraph(childProbe, NULL);
 

+ 3 - 0
ecl/eclplus/eclplus.cpp

@@ -139,9 +139,12 @@ IEclPlusHelper * createEclPlusHelper(IProperties * globals)
         }
         else
         {
+            ::Release(format);
             throw MakeStringException(-1, "unknown action");
         }
     }
+    else
+        ::Release(format);
     return helper;
 }
 

+ 0 - 1
ecl/hql/hqlcollect.cpp

@@ -563,7 +563,6 @@ void CXmlEclElement::populateChildren()
 
 void CXmlEclElement::expandChildren(IPropertyTree * xml)
 {
-    const char * name = xml->queryProp("@name");
     Owned<IPropertyTreeIterator> modit = xml->getElements("Module");
     ForEach(*modit)
     {

+ 2 - 2
ecl/hql/hqlexpr.cpp

@@ -11653,7 +11653,6 @@ extern IHqlExpression *createRow(node_operator op, HqlExprArray & args)
     case no_deserialize:
         {
             assertex(args.ordinality() >= 3);
-            ITypeInfo * childType = args.item(0).queryType();
             IHqlExpression & record = args.item(1);
             IHqlExpression & form = args.item(2);
             assertex(form.isAttribute());
@@ -11663,6 +11662,7 @@ extern IHqlExpression *createRow(node_operator op, HqlExprArray & args)
 
 #ifdef _DEBUG
             OwnedITypeInfo serializedType = getSerializedForm(type, form.queryName());
+            ITypeInfo * childType = args.item(0).queryType();
             assertex(recordTypesMatch(serializedType, childType));
 #endif
             break;
@@ -12937,7 +12937,7 @@ unsigned exportField(IPropertyTree *table, IHqlExpression *field, unsigned & off
             IPropertyTree *end = createPTree("Field", ipt_caseInsensitive);
             end->setPropBool("@isEnd", true);
             end->setProp("@name", field->queryName()->getAtomNamePtr());
-            end = table->addPropTree(end->queryName(), end);
+            table->addPropTree(end->queryName(), end);
         }
         else
             thisSize = exportRecord(f, record, flatten);

+ 1 - 1
ecl/hql/hqlfold.cpp

@@ -4348,7 +4348,7 @@ void HqlConstantPercolator::doExtractConstantTransform(IHqlExpression * transfor
                 IHqlExpression * self = lhs->queryChild(0);
                 assertex(self->getOperator() == no_self);
 
-                OwnedHqlExpr selected = selector ? createSelectExpr(LINK(selector), LINK(lhs->queryChild(1))) : LINK(lhs);
+                OwnedHqlExpr selected = selector ? createSelectExpr(LINK(selector), LINK(lf)) : LINK(lhs);
                 if (rhs->isConstant())
                     addTransformMapping(selected, rhs);
                 if (lhs->isDatarow())

+ 0 - 11
ecl/hql/hqlgram2.cpp

@@ -6511,16 +6511,6 @@ IHqlExpression * HqlGram::checkBuildIndexRecord(IHqlExpression *record, attribut
 
 void HqlGram::checkBuildIndexFilenameFlags(IHqlExpression * dataset, attribute & flags)
 {
-    IHqlExpression * flagExpr = flags.queryExpr();
-    HqlExprArray args;
-    if (flagExpr)
-        flagExpr->unwindList(args, no_comma);
-
-    IHqlDataset * table = dataset->queryDataset()->queryRootTable();
-    IHqlExpression * tableExpr = NULL;
-    if (table)
-       tableExpr = queryExpression(table);
-
 }
 
 
@@ -9008,7 +8998,6 @@ IHqlExpression * HqlGram::attachMetaAttributes(IHqlExpression * ownedExpr, HqlEx
 
 void HqlGram::defineSymbolInScope(IHqlScope * scope, DefineIdSt * defineid, IHqlExpression * expr, IHqlExpression * failure, const attribute & idattr, int assignPos, int semiColonPos, bool isParametered, HqlExprArray & parameters, IHqlExpression * defaults)
 {
-    IHqlScope * exprScope = expr->queryScope();
     IHqlExpression * scopeExpr = queryExpression(scope);
     IIdAtom * moduleName = NULL;
     if (!inType)

+ 1 - 11
ecl/hql/hqlopt.cpp

@@ -2626,6 +2626,7 @@ IHqlExpression * CTreeOptimizer::doCreateTransformed(IHqlExpression * transforme
                     okToContinue = true;
                     break;
                 }
+                break;
             }
         case no_hqlproject:
             {
@@ -2857,7 +2858,6 @@ IHqlExpression * CTreeOptimizer::doCreateTransformed(IHqlExpression * transforme
     case no_filter:
         {
             node_operator childOp = child->getOperator();
-            IHqlExpression * newGrandchild = child->queryChild(0);
             switch(childOp)
             {
             case no_filter:
@@ -3730,16 +3730,6 @@ IHqlExpression * CTreeOptimizer::doCreateTransformed(IHqlExpression * transforme
             node_operator childOp = child->getOperator();
             switch (childOp)
             {
-            case no_projectrow:
-                {
-                    break;
-                    IHqlExpression * grand = child->queryChild(0);
-                    IHqlExpression * base = createDatasetFromRow(LINK(grand));
-                    HqlExprArray args;
-                    unwindChildren(args, child);
-                    args.replace(*base, 0);
-                    return createDataset(no_hqlproject, args);
-                }
             case no_createrow:
                 {
                     DBGLOG("Optimizer: Merge %s and %s to Inline table", queryNode0Text(transformed), queryNode1Text(child));

+ 1 - 0
ecl/hql/hqlrepository.cpp

@@ -197,6 +197,7 @@ extern HQL_API IEclRepository * createCompoundRepositoryF(IEclRepository * repos
             break;
         compound->addRepository(*next);
     }
+    va_end(args);
     return compound.getClear();
 }
 

+ 0 - 5
ecl/hql/hqltrans.cpp

@@ -2019,7 +2019,6 @@ IHqlExpression * replaceExpression(IHqlExpression * expr, IHqlExpression * origi
     //specially update selectors in nested expressions.
     if (original->isDataset())
     {
-        IHqlExpression * table = queryTable(original);
         if (!definesColumnList(original) && definesColumnList(replacement))
         {
             HqlMapDatasetTransformer simpleTransformer;
@@ -4475,8 +4474,6 @@ bool ScopedDependentTransformer::setLeft(IHqlExpression * _left, IHqlExpression
 {
     ScopedTransformer::setLeft(_left, seq);
     return false;
-    pushChildContext(cachedLeft, cachedLeft);
-    return true;
 }
 
 
@@ -4484,8 +4481,6 @@ bool ScopedDependentTransformer::setLeftRight(IHqlExpression * _left, IHqlExpres
 {
     ScopedTransformer::setLeftRight(_left, _right, seq);
     return false;
-    pushChildContext(cachedRight, cachedRight);
-    return true;
 }
 
 

+ 5 - 13
ecl/hqlcpp/hqlcpp.cpp

@@ -549,7 +549,6 @@ IHqlExpression * getOptimialListFormat(IHqlExpression * table)
 
 bool canOptimizeAdjust(IHqlExpression * value)
 {
-    ITypeInfo * type = value->queryType();
     switch (value->getOperator())
     {
     case no_constant:
@@ -688,8 +687,6 @@ IHqlExpression * adjustBoundIntegerValues(IHqlExpression * left, IHqlExpression
                 IHqlExpression * rr = right->queryChild(1);
                 if (rr->getOperator() == no_constant)
                 {
-                    ITypeInfo * rlt = rl->queryType();
-                    ITypeInfo * rrt = rr->queryType();
                     if (queryUnqualifiedType(rl->queryType()) == queryUnqualifiedType(rr->queryType()))
                     {
                         __int64 delta = rr->queryValue()->getIntValue();
@@ -1761,14 +1758,14 @@ void HqlCppTranslator::cacheOptions()
     //Configure the divide by zero action
     options.divideByZeroAction = DBZzero;
     const char * dbz = wu()->getDebugValue("divideByZero",val).str();
-    if (strieq(val.str(), "0") || strieq(val.str(), "zero"))
+    if (strieq(dbz, "0") || strieq(dbz, "zero"))
         options.divideByZeroAction = DBZzero;
-    else if (strieq(val.str(), "nan"))
+    else if (strieq(dbz, "nan"))
         options.divideByZeroAction = DBZnan;
-    else if (strieq(val.str(), "fail") || strieq(val.str(), "throw"))
+    else if (strieq(dbz, "fail") || strieq(dbz, "throw"))
         options.divideByZeroAction = DBZfail;
     else if (val.length())
-        throwError2(HQLERR_UnexpectedOptionValue_XY, "divideByZero", val.str());
+        throwError2(HQLERR_UnexpectedOptionValue_XY, "divideByZero", dbz);
 
     //The following cases handle options whose default values are dependent on other options.  
     //Or where one debug options sets more than one option
@@ -7642,7 +7639,6 @@ void HqlCppTranslator::doBuildExprList(BuildCtx & ctx, IHqlExpression * expr, CH
     case type_array:
         {
             LinkedHqlExpr values = expr;
-            ITypeInfo * childType = type->queryChildType();
             //MORE: Also alien data types and other weird things...
             //if (childType->getSize() == UNKNOWN_LENGTH)
             if (expr->numChildren() == 0)
@@ -8710,7 +8706,6 @@ protected:
 void HqlCppTranslator::doBuildAssignHashCrc(BuildCtx & ctx, const CHqlBoundTarget & target, IHqlExpression * expr)
 {
     IHqlExpression * child = expr->queryChild(0);
-    ITypeInfo * childType = child->queryType();
 
     LinkedHqlExpr initialValue = queryZero();
     node_operator op = expr->getOperator();
@@ -8958,7 +8953,7 @@ void HqlCppTranslator::doBuildAssignHashElement(BuildCtx & ctx, HashCodeCreator
             {
                 creator.beginCondition(ctx);
                 BuildCtx iterctx(ctx);
-                BoundRow * row = buildDatasetIterate(iterctx, elem, false);
+                buildDatasetIterate(iterctx, elem, false);
                 doBuildAssignHashElement(iterctx, creator, elem->queryNormalizedSelector(), elem->queryRecord());
                 creator.endCondition(iterctx);
                 return;
@@ -8988,7 +8983,6 @@ void HqlCppTranslator::doBuildAssignHashElement(BuildCtx & ctx, HashCodeCreator
 void HqlCppTranslator::doBuildAssignHashMd5(BuildCtx & ctx, const CHqlBoundTarget & target, IHqlExpression * expr)
 {
     IHqlExpression * child = expr->queryChild(0);
-    ITypeInfo * childType = child->queryType();
 
     Owned<ITypeInfo> stateType = makeDataType(sizeof(md5_state_s));
     //initialize the state object
@@ -9507,7 +9501,6 @@ void HqlCppTranslator::doBuildAssignSubString(BuildCtx & ctx, const CHqlBoundTar
         CHqlBoundExpr boundSrc;
         buildCachedExpr(ctx, info.src, boundSrc);
         info.bindToFrom(*this, ctx);
-        ITypeInfo * sourceType = boundSrc.queryType();
 
         if (!info.boundFrom.expr)
             info.boundFrom.expr.setown(getSizetConstant(1));
@@ -11882,7 +11875,6 @@ IHqlExpression * HqlCppTranslator::getBoundSize(ITypeInfo * type, IHqlExpression
 {
     type_t tc = type->getTypeCode();
 
-    ITypeInfo * lengthType = length->queryType();
     switch (tc)
     {
     case type_qstring:

+ 2 - 6
ecl/hqlcpp/hqlcppds.cpp

@@ -1370,7 +1370,6 @@ void ChildGraphBuilder::generateGraph(BuildCtx & ctx)
     //Remove this line once all engines use the new child queries exclusively
     if (numResults == 0) numResults++;
 
-    IHqlExpression * query = childQuery->queryChild(2);
     OwnedHqlExpr resourced = translator.getResourcedChildGraph(graphctx, childQuery, numResults, no_none);
 
     Owned<ParentExtract> extractBuilder = translator.createExtractBuilder(graphctx, PETchild, represents, resourced, true);
@@ -1419,7 +1418,6 @@ void ChildGraphBuilder::generatePrefetchGraph(BuildCtx & _ctx, OwnedHqlExpr * re
     BuildCtx aliasctx(ctx);
     aliasctx.addGroup();
 
-    IHqlExpression * query = childQuery->queryChild(2);
     OwnedHqlExpr resourced = translator.getResourcedChildGraph(ctx, childQuery, numResults, no_none);
 
     Owned<ParentExtract> extractBuilder = translator.createExtractBuilder(ctx, PETchild, represents, resourced, false);
@@ -1451,7 +1449,6 @@ unique_id_t ChildGraphBuilder::buildLoopBody(BuildCtx & ctx, bool multiInstance)
     BuildCtx subctx(ctx);
     subctx.addGroup();
 
-    IHqlExpression * query = childQuery->queryChild(2);
     OwnedHqlExpr resourced = translator.getResourcedChildGraph(ctx, childQuery, numResults, no_loop);
     //Add a flag to indicate multi instance
     if (multiInstance)
@@ -1586,7 +1583,6 @@ unique_id_t ChildGraphBuilder::buildRemoteGraph(BuildCtx & ctx)
     BuildCtx subctx(ctx);
     subctx.addGroup();
 
-    IHqlExpression * query = childQuery->queryChild(2);
     OwnedHqlExpr resourced = translator.getResourcedChildGraph(ctx, childQuery, numResults, no_allnodes);
 
     Owned<ParentExtract> extractBuilder = translator.createExtractBuilder(ctx, PETremote, represents, GraphRemote, false);
@@ -4217,7 +4213,7 @@ void HqlCppTranslator::doBuildRowAssignAggregate(BuildCtx & ctx, IReferenceSelec
 
     doBuildRowAssignAggregateClear(ctx, target, expr);
     BuildCtx condctx(ctx);
-    BoundRow * cursor = buildDatasetIterate(condctx, dataset, isSingleExists);
+    buildDatasetIterate(condctx, dataset, isSingleExists);
     doBuildRowAssignAggregateNext(condctx, target, expr, isSingleExists, guard);
 }
 
@@ -5357,7 +5353,7 @@ void HqlCppTranslator::doBuildStmtApply(BuildCtx & ctx, IHqlExpression * expr)
     if (start)
         buildStmt(ctx, start->queryChild(0));
     BuildCtx condctx(ctx);
-    BoundRow * cursor = buildDatasetIterate(condctx, dataset, false);
+    buildDatasetIterate(condctx, dataset, false);
     unsigned max = expr->numChildren();
     for (unsigned i=1; i < max; i++)
     {

+ 2 - 7
ecl/hqlcpp/hqlcse.cpp

@@ -534,13 +534,8 @@ bool CseSpotter::checkPotentialCSE(IHqlExpression * expr, CseSpotterInfo * extra
         return true;
     case no_substring:
         {
-            IHqlExpression * child = expr->queryChild(0);
-//          if (queryBodyExtra(child)->isAliased())
-            {
-                SubStringHelper helper(expr);
-                return !helper.canGenerateInline();
-            }
-            return true;
+            SubStringHelper helper(expr);
+            return !helper.canGenerateInline();
         }
     case no_cast:
     case no_implicitcast:

+ 5 - 10
ecl/hqlcpp/hqlcset.cpp

@@ -1360,7 +1360,7 @@ void GeneralSetCursor::buildExprSelect(BuildCtx & ctx, IHqlExpression * indexExp
             checkNotAll(ctx);
 
         OwnedHqlExpr dsIndexExpr = createDatasetSelect(indexExpr);
-        BoundRow * cursor = dsCursor->buildSelectNth(ctx, dsIndexExpr);
+        dsCursor->buildSelectNth(ctx, dsIndexExpr);
         OwnedHqlExpr select = createSelectExpr(LINK(dsIndexExpr), LINK(element));
         translator.buildExpr(ctx, select, tgt);
     }
@@ -1457,7 +1457,7 @@ void CreateSetCursor::buildIsAll(BuildCtx & ctx, CHqlBoundExpr & tgt)
 
 void CreateSetCursor::buildIterateLoop(BuildCtx & ctx, CHqlBoundExpr & curBound, bool needToBreak)
 {
-    BoundRow * cursor = dsCursor->buildIterateLoop(ctx, needToBreak);
+    dsCursor->buildIterateLoop(ctx, needToBreak);
     translator.buildExpr(ctx, value, curBound);
 }
 
@@ -2099,9 +2099,7 @@ IHqlCppDatasetBuilder * HqlCppTranslator::createLinkedDictionaryBuilder(IHqlExpr
 
 IHqlCppDatasetBuilder * HqlCppTranslator::createSingleRowTempDatasetBuilder(IHqlExpression * record, BoundRow * row)
 {
-//  if (translator.isFixedRecordSize(record))
-        return new SingleRowTempDatasetBuilder(*this, record, row);
-    return createBlockedDatasetBuilder(record);
+    return new SingleRowTempDatasetBuilder(*this, record, row);
 }
 
 IHqlCppDatasetBuilder * HqlCppTranslator::createInlineDatasetBuilder(IHqlExpression * record, IHqlExpression * size, IHqlExpression * address)
@@ -2153,12 +2151,9 @@ void HqlCppTranslator::buildSetAssign(BuildCtx & ctx, IHqlCppSetBuilder * builde
         doBuildSetAssignAndCast(ctx, builder, expr->queryChild(0));
         break;
     case no_addsets:
+        //NOTE: Cannot assign left then right because it needs to correctly cope with ALL
         doBuildSetAssignAndCast(ctx, builder, expr);
         break;
-        //MORE: This is wrong because needs to cope with all.
-        buildSetAssign(ctx, builder, expr->queryChild(0));
-        buildSetAssign(ctx, builder, expr->queryChild(1));
-        break;
     case no_all:
         builder->setAll(ctx, queryBoolExpr(true));
         break;
@@ -2188,7 +2183,7 @@ void HqlCppTranslator::buildSetAssign(BuildCtx & ctx, IHqlCppSetBuilder * builde
             IHqlExpression * value = expr->queryChild(1);
             builder->setAll(ctx, queryBoolExpr(false));
             BuildCtx subctx(ctx);
-            BoundRow * cursor = buildDatasetIterate(subctx, ds, false);
+            buildDatasetIterate(subctx, ds, false);
             Owned<IReferenceSelector> selector = builder->buildCreateElement(subctx);
             selector->set(subctx, value);
             builder->finishElement(subctx);

+ 13 - 23
ecl/hqlcpp/hqlhtcpp.cpp

@@ -1585,7 +1585,6 @@ void HqlCppTranslator::finalizeTempRow(BuildCtx & ctx, BoundRow * row, BoundRow
     IHqlExpression * rowBuilder = builder->queryBound();
     bool targetIsOwnedRow = hasWrapperModifier(targetRow->queryType());
 
-    IHqlExpression * record = rowBuilder->queryRecord();
     if (builder->queryBuilder() && targetIsOwnedRow)
     {
         OwnedHqlExpr createdRowSize = getRecordSize(builder->querySelector());
@@ -3482,7 +3481,7 @@ bool HqlCppTranslator::buildMetaPrefetcherClass(BuildCtx & ctx, IHqlExpression *
     bool ok;
     {
         BuildCtx prefetchctx(prefetcher.startctx);
-        IHqlStmt * stmt = prefetchctx.addQuotedCompound("virtual void readAhead(IRowDeserializerSource & in)");
+        prefetchctx.addQuotedCompound("virtual void readAhead(IRowDeserializerSource & in)");
         OwnedHqlExpr helper = createVariable("in", makeBoolType());
 
         ok = queryRecordOffsetMap(record)->buildReadAhead(*this, prefetchctx, helper);
@@ -6086,7 +6085,10 @@ IReferenceSelector * HqlCppTranslator::buildReference(BuildCtx & ctx, IHqlExpres
     case no_select:
         {
             IHqlExpression * ds = expr->queryChild(0);
+#ifdef _DEBUG
+            //Here to make tracing easier in a debugger
             IHqlExpression * field = expr->queryChild(1);
+#endif
             Owned<IReferenceSelector> selector;
             if (isNewSelector(expr))
             {
@@ -7716,7 +7718,6 @@ void HqlCppTranslator::doBuildExprSizeof(BuildCtx & ctx, IHqlExpression * expr,
         return;
 
     IHqlExpression * child = expr->queryChild(0);
-    IHqlExpression * limitExpr = expr->queryChild(1);
     ITypeInfo * type = child->queryType();
     if (expr->hasAttribute(maxAtom))
     {
@@ -7785,6 +7786,7 @@ void HqlCppTranslator::doBuildExprSizeof(BuildCtx & ctx, IHqlExpression * expr,
     }
 
 #if 0
+    IHqlExpression * limitExpr = expr->queryChild(1);
     if (limitExpr)
     {
         OwnedHqlExpr other = createValue(no_sizeof, expr->getType(), LINK(child));
@@ -8842,7 +8844,6 @@ ABoundActivity * HqlCppTranslator::doBuildActivityApply(BuildCtx & ctx, IHqlExpr
 {
     StringBuffer s;
     IHqlExpression * dataset = expr->queryChild(0);
-    IHqlExpression * action = expr->queryChild(1);
     IHqlExpression * start = expr->queryAttribute(beforeAtom);
     IHqlExpression * end = expr->queryAttribute(afterAtom);
     Owned<ABoundActivity> boundDataset = buildCachedActivity(ctx, dataset);
@@ -9531,7 +9532,7 @@ void HqlCppTranslator::buildCsvWriteTransform(BuildCtx & subctx, IHqlExpression
                 buildCsvWriteScalar(subctx, translatedCount, encoding);
 
                 BuildCtx loopctx(subctx);
-                BoundRow * row = cursor->buildIterateLoop(loopctx, false);
+                cursor->buildIterateLoop(loopctx, false);
                 buildCsvWriteTransform(loopctx, expr->queryRecord(), selected, encoding);
                 return;
             }
@@ -10010,7 +10011,6 @@ ABoundActivity * HqlCppTranslator::doBuildActivityOutputIndex(BuildCtx & ctx, IH
     IHqlExpression * dataset  = expr->queryChild(0);
     IHqlExpression * filename = queryRealChild(expr, 1);
     IHqlExpression * record = dataset->queryRecord();
-    IHqlDataset * baseTable = dataset->queryDataset()->queryRootTable();
 
     Owned<ABoundActivity> boundDataset = buildCachedActivity(ctx, dataset);
     Owned<ActivityInstance> instance = new ActivityInstance(*this, ctx, TAKindexwrite, expr, "IndexWrite");
@@ -10945,7 +10945,6 @@ void HqlCppTranslator::buildXmlSerializeUsingMeta(BuildCtx & ctx, IHqlExpression
 ABoundActivity * HqlCppTranslator::doBuildActivityOutputWorkunit(BuildCtx & ctx, IHqlExpression * expr, bool isRoot)
 {
     IHqlExpression * dataset = expr->queryChild(0);
-    IHqlExpression * record = dataset->queryRecord();
     IHqlExpression * seq = querySequence(expr);
     IHqlExpression * name = queryResultName(expr);
     int sequence = (int)getIntValue(seq, ResultSequenceInternal);
@@ -11079,7 +11078,6 @@ void HqlCppTranslator::doBuildStmtOutput(BuildCtx & ctx, IHqlExpression * expr)
 ABoundActivity * HqlCppTranslator::doBuildActivityDictionaryWorkunitWrite(BuildCtx & ctx, IHqlExpression * expr, bool isRoot)
 {
     IHqlExpression * dictionary = expr->queryChild(0);
-    IHqlExpression * record = dictionary->queryRecord();
     IHqlExpression * seq = querySequence(expr);
     IHqlExpression * name = queryResultName(expr);
     int sequence = (int)getIntValue(seq, ResultSequenceInternal);
@@ -11604,7 +11602,6 @@ ABoundActivity * HqlCppTranslator::doBuildActivityJoinOrDenormalize(BuildCtx & c
 
     LinkedHqlExpr dataset1 = expr->queryChild(0);
     LinkedHqlExpr dataset2 = queryJoinRhs(expr);
-    IHqlExpression * condition = expr->queryChild(2);
     IHqlExpression * transform = expr->queryChild(3);
     IHqlExpression * noSortAttr = expr->queryAttribute(noSortAtom);
     IHqlExpression * rowlimit = expr->queryAttribute(rowLimitAtom);
@@ -12213,7 +12210,10 @@ BoundRow * HqlCppTranslator::buildTransformCursors(BuildCtx & ctx, IHqlExpressio
         rightRow = bindTableCursor(ctx, right, "right", no_right, selSeq);
 
     if (options.precalculateFieldOffsets)
+    {
         precalculateFieldOffsets(ctx, transform, leftRow);
+        precalculateFieldOffsets(ctx, transform, rightRow);
+    }
     return bindSelf(ctx, self, "crSelf");
 }
 
@@ -12546,7 +12546,6 @@ void HqlCppTranslator::doBuildAggregateFirstFunc(BuildCtx & ctx, IHqlExpression
 {
     IHqlExpression * dataset = expr->queryChild(0);
     IHqlExpression * tgtRecord = expr->queryChild(1);
-    IHqlExpression * transform = expr->queryChild(2);
 
     BuildCtx funcctx(ctx);
     funcctx.addQuotedCompound("virtual size32_t processFirst(ARowBuilder & crSelf, const void * _src)");
@@ -12718,12 +12717,10 @@ void HqlCppTranslator::doBuildAggregateMergeFunc(BuildCtx & ctx, IHqlExpression
 
     OwnedHqlExpr resultDataset = createDataset(no_anon, LINK(tgtRecord));
     BoundRow * selfRow = bindSelf(funcctx, resultDataset, "crSelf");
-    BoundRow * leftCursor = bindTableCursor(funcctx, resultDataset, "left", no_left, selSeq);
     BoundRow * rightCursor = bindTableCursor(funcctx, resultDataset, "right", no_right, selSeq);
 
     unsigned numAggregates = transform->numChildren();
     unsigned idx;
-    IHqlExpression * left = leftCursor->querySelector();
     IHqlExpression * right = rightCursor->querySelector();
     OwnedHqlExpr self = getSelf(tgtRecord);
     for (idx = 0; idx < numAggregates; idx++)
@@ -13059,7 +13056,6 @@ public:
     {
         IHqlExpression * dataset = expr->queryChild(0);
         IHqlExpression * selSeq = querySelSeq(expr);
-        IHqlExpression * rowsid = expr->queryAttribute(_rowsid_Atom);
         self.setown(getSelf(expr));
         left.setown(createSelector(no_left, dataset, selSeq));
         right.setown(createSelector(no_right, expr, selSeq));
@@ -13160,9 +13156,6 @@ IHqlExpression * HqlCppTranslator::getUserAggregateMergeTransform(IHqlExpression
 
 void HqlCppTranslator::doBuildUserMergeAggregateFunc(BuildCtx & ctx, IHqlExpression * expr, IHqlExpression * mergeTransform)
 {
-    IHqlExpression * dataset = expr->queryChild(0);
-    IHqlExpression * tgtRecord = expr->queryChild(1);
-    IHqlExpression * transform = expr->queryChild(2);
     IHqlExpression * selSeq = querySelSeq(expr);
     if (!mergeTransform)
         throwError(HQLERR_AggregateNeedMergeTransform);
@@ -13232,9 +13225,9 @@ void HqlCppTranslator::doBuildUserAggregateFuncs(BuildCtx & ctx, IHqlExpression
         ensureRowAllocated(funcctx, "crSelf");
         funcctx.addQuoted("unsigned char * src = (unsigned char *) _src;");
 
-        BoundRow * leftCursor = bindTableCursor(funcctx, dataset, "src", options.mainRowsAreLinkCounted, no_left, selSeq);
         BoundRow * selfCursor = bindSelf(funcctx, expr, "crSelf");
-        BoundRow * rightCursor = bindTableCursor(funcctx, expr, "crSelf.row()", no_right, querySelSeq(expr));
+        bindTableCursor(funcctx, dataset, "src", options.mainRowsAreLinkCounted, no_left, selSeq);
+        bindTableCursor(funcctx, expr, "crSelf.row()", no_right, selSeq);
 
         doBuildUserAggregateProcessTransform(funcctx, selfCursor, expr, nextTransform, queryBoolExpr(true));
         buildReturnRecordSize(funcctx, selfCursor);
@@ -14632,7 +14625,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivityPrefetchProject(BuildCtx & ctx
         {
             //Generate the extract preparation function
             BuildCtx prectx(instance->startctx);
-            IHqlStmt * preStmt = prectx.addQuotedCompound("virtual bool preTransform(rtlRowBuilder & builder, const void * _left, unsigned __int64 _counter)");
+            prectx.addQuotedCompound("virtual bool preTransform(rtlRowBuilder & builder, const void * _left, unsigned __int64 _counter)");
             associateSkipReturnMarker(prectx, queryBoolExpr(false), NULL);
             prectx.addQuoted("const unsigned char * left = (const unsigned char *) _left;");
             if (expr->getOperator() == no_hqlproject)
@@ -14820,7 +14813,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySerialize(BuildCtx & ctx, IHql
     funcctx.addQuotedCompound("virtual size32_t transform(ARowBuilder & crSelf, const void * _left)");
 
     // Bind left to "left" and right to RIGHT
-    BoundRow * leftCursor = bindTableCursor(funcctx, dataset, "_left");
+    bindTableCursor(funcctx, dataset, "_left");
     BoundRow * selfCursor = bindSelf(funcctx, expr, "crSelf");
 
     //MORE: I don't have any examples that trigger this code as far as I know...
@@ -16480,7 +16473,6 @@ ABoundActivity * HqlCppTranslator::doBuildActivityTempTable(BuildCtx & ctx, IHql
 
     OwnedHqlExpr values = normalizeListCasts(expr->queryChild(0));
     IHqlExpression * record = expr->queryChild(1);
-    IHqlExpression * defaults = expr->queryChild(2);
 
     assertex(values->getOperator() != no_recordlist);       // should have been transformed by now.
 
@@ -17783,7 +17775,6 @@ static void expandDistributionFields(IHqlExpression * record, HqlExprArray & sel
             {
                 OwnedHqlExpr selected = selector ? createSelectExpr(LINK(selector), LINK(cur)) : LINK(cur);
 
-                IAtom * name = cur->queryName();
                 if (cur->queryType()->getTypeCode() == type_row)
                 {
                     expandDistributionFields(cur->queryRecord(), selects, selected);
@@ -17810,7 +17801,6 @@ ABoundActivity * HqlCppTranslator::doBuildActivityDistribution(BuildCtx & ctx, I
     IHqlExpression * dataset = expr->queryChild(0);
     IHqlExpression * fields = queryRealChild(expr, 1);
     IHqlExpression * sequence = expr->queryAttribute(sequenceAtom);
-    IHqlExpression * name = queryAttributeChild(expr, namedAtom, 0);
 
     if (!sequence)
         throwError(HQLERR_DistributionNoSequence);

+ 0 - 1
ecl/hqlcpp/hqliproj.cpp

@@ -2452,7 +2452,6 @@ void ImplicitProjectTransformer::calculateFieldsUsed(IHqlExpression * expr)
                         if ((cur->getOperator() == no_select) && !isNewSelector(cur))
                         {
                             IHqlExpression * ds = queryDatasetCursor(cur);
-                            IHqlExpression * field = cur->queryChild(1);
                             if (ds == queryActiveTableSelector())
                                 processMatchingSelector(extra->outputFields, cur, queryActiveTableSelector());
                             else

+ 0 - 3
ecl/hqlcpp/hqlresource.cpp

@@ -2732,8 +2732,6 @@ bool EclResourcer::findSplitPoints(IHqlExpression * expr, bool isProjected)
             return info->containsActivity;
         case no_mapto:
             throwUnexpected();
-            info->containsActivity = findSplitPoints(expr->queryChild(1), false);
-            return info->containsActivity;
         case no_activerow:
             info->isActivity = true;
             info->containsActivity = false;
@@ -4536,7 +4534,6 @@ static IHqlExpression * getScalarReplacement(CChildDependent & cur, ResourcerInf
     //Now modify the spilled result depending on how the spilled result was created (see EclHoistLocator::noteScalar() above)
     if (value->getOperator() == no_select)
     {
-        IHqlExpression * field = value->queryChild(1);
         bool isNew;
         IHqlExpression * ds = querySelectorDataset(value, isNew);
         if(isNew || ds->isDatarow())

+ 4 - 4
ecl/hqlcpp/hqlsource.cpp

@@ -631,8 +631,8 @@ public:
                 translator.ensureRowAllocated(transformctx, "crSelf");
                 transformctx.addQuoted("const byte * pr = (const byte *)_projected;");
 
-                BoundRow * self = translator.bindTableCursor(transformctx, rawStepping.ds, "crSelf.row()");
-                BoundRow * pr = translator.bindTableCursor(transformctx, outputStepping.ds, "pr");
+                translator.bindTableCursor(transformctx, rawStepping.ds, "crSelf.row()");
+                translator.bindTableCursor(transformctx, outputStepping.ds, "pr");
                 StringBuffer s;
                 ForEachChild(i, outputStepping.fields)
                 {
@@ -6856,7 +6856,7 @@ void HqlCppTranslator::buildXmlReadTransform(IHqlExpression * dataset, StringBuf
     xmlUsesContents = false;
     //MORE: If this becomes a compound activity
     BoundRow * rootSelfRow = bindSelf(funcctx, dataset, "crSelf");
-    BoundRow * xmlCursor = bindXmlTableCursor(funcctx, dataset, "row", no_none, NULL, true);
+    bindXmlTableCursor(funcctx, dataset, "row", no_none, NULL, true);
     OwnedHqlExpr activityId = createVariable("activityId", LINK(sizetType));
     funcctx.associateExpr(queryActivityIdMarker(), activityId);
 
@@ -6892,7 +6892,7 @@ unsigned HqlCppTranslator::buildCsvReadTransform(BuildCtx & subctx, IHqlExpressi
 
     //MORE: If this becomes a compound activity
     BoundRow * rootSelfRow = bindSelf(funcctx, dataset, "crSelf");
-    BoundRow * xmlCursor = bindCsvTableCursor(funcctx, dataset, "Src", no_none, NULL, true, queryCsvEncoding(csvAttr));
+    bindCsvTableCursor(funcctx, dataset, "Src", no_none, NULL, true, queryCsvEncoding(csvAttr));
     ensureRowAllocated(funcctx, rootSelfRow);
 
     if (newInterface)

+ 1 - 1
ecl/hqlcpp/hqltcppc.cpp

@@ -2709,7 +2709,7 @@ IHqlExpression * CXmlColumnInfo::getXmlDatasetExpr(HqlCppTranslator & translator
     IHqlExpression * path = selector->queryExpr();
     StringBuffer subPrefix;
     BoundRow * selfCursor = translator.bindSelf(loopctx, path, targetRow->queryBound(), targetRow->queryBuilder());
-    BoundRow * srcCursor = translator.bindXmlTableCursor(loopctx, path, subRowExpr, no_none, NULL, false);
+    translator.bindXmlTableCursor(loopctx, path, subRowExpr, no_none, NULL, false);
     OwnedHqlExpr active = ensureActiveRow(path);
     translator.buildAssign(loopctx, selfCursor->querySelector(), active);
     translator.finishSelf(loopctx, selfCursor, targetRow);

+ 0 - 3
ecl/hqlcpp/hqltomita.cpp

@@ -751,9 +751,6 @@ void TomRule::getFeatures(TomFeatureArray & target)
 
 StringBuffer & TomRule::getName(StringBuffer & out)
 {
-    IHqlExpression * expr = def;
-    if (expr && expr->isAttribute())
-        expr = expr->queryChild(0);
     if (cachedName)
         out.append(cachedName);
     else if (id)

+ 0 - 7
ecl/hqlcpp/hqlttcpp.cpp

@@ -1764,7 +1764,6 @@ static IHqlExpression * simplifySortlistComplexity(IHqlExpression * sortlist)
 static IHqlExpression * normalizeIndexBuild(IHqlExpression * expr, bool sortIndexPayload, bool alwaysLocal, bool allowImplicitSubSort)
 {
     LinkedHqlExpr dataset = expr->queryChild(0);
-    IHqlExpression * normalizedDs = dataset->queryNormalizedSelector();
     IHqlExpression * buildRecord = dataset->queryRecord();
 
     // If any field types collate differently before and after translation to their hozed
@@ -3129,7 +3128,6 @@ IHqlExpression * ThorHqlTransformer::normalizeSort(IHqlExpression * expr)
 
 IHqlExpression * ThorHqlTransformer::normalizeSubSort(IHqlExpression * expr)
 {
-    IHqlExpression * dataset = expr->queryChild(0);
     IHqlExpression * sortlist = expr->queryChild(1);
     IHqlExpression * grouping = expr->queryChild(2);
     OwnedHqlExpr newsort = simplifySortlistComplexity(sortlist);
@@ -3163,7 +3161,6 @@ IHqlExpression * ThorHqlTransformer::normalizeSortSteppedIndex(IHqlExpression *
     node_operator datasetOp = dataset->getOperator();
     if ((datasetOp == no_keyindex) || (datasetOp == no_newkeyindex))
     {
-        IHqlExpression * indexRecord = dataset->queryRecord();
         if (!dataset->hasAttribute(attrName))
         {
             HqlExprArray selects;
@@ -5190,7 +5187,6 @@ void GlobalAttributeInfo::doSplitGlobalDefinition(ITypeInfo * type, IHqlExpressi
     }
     else
     {
-        ITypeInfo * ct = type->queryChildType();
         if (type->getTypeCode() == type_set)
             extraSetAttr.setown(createComma(extraSetAttr.getClear(), createAttribute(_original_Atom, createValue(no_implicitcast, LINK(type), LINK(value)))));
         setOutput.setown(createSetValue(value, queryAlias(value)));
@@ -7603,8 +7599,6 @@ IHqlExpression * NewScopeMigrateTransformer::hoist(IHqlExpression * expr, IHqlEx
     if (minimizeWorkunitTemporaries)
         return createWrapper(no_globalscope, LINK(hoisted));
     IHqlExpression * setResult = createSetResult(hoisted);
-    IHqlExpression * seqAttr = setResult->queryAttribute(sequenceAtom);
-    IHqlExpression * aliasAttr = setResult->queryAttribute(namedAtom);
     appendToTarget(*setResult);
 
     return createGetResultFromSetResult(setResult);
@@ -10661,7 +10655,6 @@ IHqlExpression * HqlTreeNormalizer::removeDefaultsFromExpr(IHqlExpression * expr
     IHqlExpression * oldRecord = expr->queryChild(recordChildIndex);
     OwnedHqlExpr newRecord = transform(oldRecord);
 
-    IHqlExpression * ds = expr->queryChild(0);
     HqlExprArray assigns;
     OwnedHqlExpr self = getSelf(newRecord);
     convertRecordToAssigns(assigns, oldRecord, self, false, false);

+ 1 - 1
ecl/hqlcpp/hqlwcpp.cpp

@@ -515,7 +515,7 @@ void HqlCppWriter::generateType(ITypeInfo * type, const char * name)
             //recurse to child type
             break;
         case type_void:
-        case no_any:
+        case type_any:
             prefix = "void";
             break;
         case type_set:

+ 1 - 2
ecl/hthor/hthorkey.cpp

@@ -3022,7 +3022,6 @@ class DistributedKeyLookupHandler : public CInterface, implements IThreadedExcep
     bool opened;
     IArrayOf<IKeyManager> managers;
     Owned<IRecordLayoutTranslator> trans;
-    unsigned subStart;
     UnsignedArray keyNumParts;
 
     IArrayOf<KeyedLookupPartHandler> parts;
@@ -3089,7 +3088,7 @@ public:
             ForEachItemIn(subno, managers)
             {
                 agent.reportProgress(NULL);
-                subStart = subSizes.item(subno);
+                unsigned subStart = subSizes.item(subno);
                 IKeyManager & manager = managers.item(subno);
                 owner.readyManager(&manager, row);
                 while(manager.lookup(false))

+ 3 - 3
esp/bindings/http/platform/httpprot.cpp

@@ -182,10 +182,10 @@ bool CHttpProtocol::notifySelected(ISocket *sock,unsigned selected)
                             if(ci && ci->IsShared())
                                 accepted->Release();
                         }
-                        delete holder;
+                        delete [] holder;
                         throw;
                     }
-                    delete holder;
+                    delete [] holder;
                 }
                 else
                 {
@@ -346,7 +346,7 @@ bool CSecureHttpProtocol::notifySelected(ISocket *sock,unsigned selected)
                         holder[3] = (void*)&useSSL;
                         holder[4] = (void*)m_ssctx.get();
                         http_thread_pool->start((void*)holder);
-                        delete holder;
+                        delete [] holder;
                     }
                     else
                     {

+ 1 - 1
esp/bindings/http/platform/httptransport.cpp

@@ -864,7 +864,7 @@ int CHttpMessage::send()
                 break;
             }
         }
-        delete buffer;
+        delete [] buffer;
     }
 
     return retcode;

+ 2 - 2
esp/bindings/http/platform/mime.cpp

@@ -312,7 +312,7 @@ void CMimeMultiPart::unserialize(const char* contenttype, int text_length, const
         ptr = Utils::getWord(ptr, oneword, "; ");
     }
 
-    delete typebuf;
+    delete [] typebuf;
 
     int oneline_len = 0;
     int cur_pos = 0;
@@ -488,7 +488,7 @@ void CMimeMultiPart::parseContentType(const char* contenttype)
         ptr = Utils::getWord(ptr, oneword, "; ");
     }
 
-    delete typebuf;
+    delete [] typebuf;
 
     return;
 }

+ 2 - 2
esp/services/WsDeploy/WsDeployService.cpp

@@ -153,7 +153,7 @@ void substituteParameters(const IPropertyTree* pEnv, const char *xpath, IPropert
         StringBuffer sb(xpath2);
         int pos = xpath2.indexOf(']');
         if (pos != -1)
-          sb.clear().append(xpath2.substring(0, pos)->toCharArray());
+          sb.clear().append(xpath2.toCharArray(), 0, pos);
 
         result.append('\"');
         result.append(pNode->queryProp(sb.str()));
@@ -3853,7 +3853,7 @@ bool CWsDeployFileInfo::getBuildServerDirs(IEspContext &context, IEspGetBuildSer
   else 
   {
     Owned<IFile> inFiles = NULL;
-    IPropertyTree* pParentNode = createPTree("BuildServerComps");
+    Owned<IPropertyTree> pParentNode = createPTree("BuildServerComps");
 
     if (!strcmp(cmd, "Release"))
       sourceDir.append(PATHSEPCHAR).append("release");

+ 1 - 0
esp/test/httptest/httptest.cpp

@@ -421,6 +421,7 @@ int HttpClient::sendRequest(StringBuffer& req)
             if(m_stat.slowest < stat.slowest)
                 m_stat.slowest = stat.slowest;
         }
+        delete [] thrdlist;
     }
     else
         sendRequest(m_times, m_stat, req);

+ 1 - 0
esp/tools/soapplus/http.cpp

@@ -1006,6 +1006,7 @@ int HttpClient::sendStressRequests(HttpStat* overall_stat)
                 overall_stat->slowest = stat->slowest;
         }
     }
+    delete [] thrdlist;
 
     return 0;
 }

+ 2 - 0
esp/tools/soapplus/xmldiff.cpp

@@ -709,6 +709,8 @@ int CXmlDiff::countDiff(const char* xpath, IPropertyTree* t1, IPropertyTree* t2,
                 {
                     int estimate = chld_total*unmatched/(i+1) + 2*chld_diff;
                     m_diffcountcache[key] = estimate;
+                    delete[] ptrs1;
+                    delete[] ptrs2;
                     return estimate;
                 }
             }

+ 3 - 0
roxie/ccd/ccdcontext.cpp

@@ -700,6 +700,9 @@ public:
         checkingHeap = _checkingHeap;
 
         aborted = false;
+        exceptionLogged = false;
+        priority = 0;
+        totSlavesReplyLen = 0;
 
         allocatorMetaCache.setown(createRowAllocatorCache(this));
         rowManager.setown(roxiemem::createRowManager(_memoryLimit, this, logctx, allocatorMetaCache, false));

+ 2 - 0
roxie/roxiemem/roxiemem.cpp

@@ -2232,6 +2232,8 @@ class BufferedRowCallbackManager
         ReleaseBufferThread(BufferedRowCallbackManager & _owner)
         : Thread("ReleaseBufferThread"), owner(_owner), abort(false)
         {
+            args.critical = false;
+            args.result = NULL;
         }
 
         virtual int run()

+ 1 - 1
roxie/udplib/udptrr.cpp

@@ -490,7 +490,7 @@ class CReceiveManager : public CInterface, implements IReceiveManager
 
     public:
         receive_sniffer(CReceiveManager &_parent, unsigned _snifferPort, const IpAddress &_snifferIP, unsigned numNodes)
-          : Thread("udplib::receive_sniffer"), parent(_parent), snifferPort(_snifferPort), snifferIP(_snifferIP)
+          : Thread("udplib::receive_sniffer"), parent(_parent), snifferPort(_snifferPort), snifferIP(_snifferIP), running(false)
         {
             snifferTable = new SnifferEntry[numNodes];
             sniffer_socket = ISocket::multicast_create(snifferPort, snifferIP);

+ 1 - 0
roxie/udplib/uttest.cpp

@@ -435,6 +435,7 @@ public:
 
     ~SortMaster()
     {
+        delete [] nodeData;
         delete [] nextNode;
         delete [] receiveSem;
         delete [] receivesCompleted;

+ 8 - 20
rtl/eclrtl/eclrtl.cpp

@@ -636,14 +636,6 @@ void rtl_ls82en(size32_t l, char * t, __int64 val)
 //=============================================================================
 // Numeric conversion functions... - unknown length ebcdic target
 
-#define intToUnknownEbcdicStringBody() \
-    unsigned alen = numtostr(astr, val); \
-    rtlStrToEStrX(elen,estr,alen,astr); \
-    char * result = (char *)rtlMalloc(elen); \
-    memcpy(result, estr, elen); \
-    l = elen; \
-    t = result;
-
 #if defined _MSC_VER
 #pragma warning(push)
 #pragma warning(disable:4700)
@@ -651,33 +643,29 @@ void rtl_ls82en(size32_t l, char * t, __int64 val)
 void rtl_l42ex(size32_t & l, char * & t, unsigned val)
 {
     char astr[20];
-    char * estr;
-    unsigned elen;
-    intToUnknownEbcdicStringBody();
+    unsigned alen = numtostr(astr, val);
+    rtlStrToEStrX(l,t,alen,astr);
 }
 
 void rtl_l82ex(size32_t & l, char * & t, unsigned __int64 val)
 {
     char astr[40];
-    char * estr;
-    unsigned elen;
-    intToUnknownEbcdicStringBody();
+    unsigned alen = numtostr(astr, val);
+    rtlStrToEStrX(l,t,alen,astr);
 }
 
 void rtl_ls42ex(size32_t & l, char * & t, int val)
 {
     char astr[20];
-    char * estr;
-    unsigned elen;
-    intToUnknownEbcdicStringBody();
+    unsigned alen = numtostr(astr, val);
+    rtlStrToEStrX(l,t,alen,astr);
 }
 
 void rtl_ls82ex(size32_t & l, char * & t, __int64 val)
 {
     char astr[40];
-    char * estr;
-    unsigned elen;
-    intToUnknownEbcdicStringBody();
+    unsigned alen = numtostr(astr, val);
+    rtlStrToEStrX(l,t,alen,astr);
 }
 #ifdef _MSC_VER
 #pragma warning(pop)

+ 1 - 1
system/jlib/jmisc.cpp

@@ -517,7 +517,7 @@ bool invoke_program(const char *command_line, DWORD &runcode, bool wait, const c
     {
         if (outfile&&*outfile) {
             int outh = open(outfile, O_CREAT|O_WRONLY|O_TRUNC, S_IRUSR|S_IWUSR);
-            if(outh > 0)
+            if(outh >= 0)
             {
                 dup2(outh, STDOUT_FILENO);
                 dup2(outh, STDERR_FILENO);

+ 7 - 1
system/jlib/jsocket.cpp

@@ -2525,7 +2525,10 @@ bool isInterfaceIp(const IpAddress &ip, const char *ifname)
     ifc.ifc_len = 1024;
     ifc.ifc_buf = buf;
     if(ioctl(fd, SIOCGIFCONF, &ifc) < 0) // query interfaces
+    {
+        close(fd);
         return false;
+    }
     struct ifreq *ifr = ifc.ifc_req;
     unsigned n = ifc.ifc_len/sizeof(struct ifreq);
     bool match = false;
@@ -2562,7 +2565,10 @@ bool getInterfaceIp(IpAddress &ip,const char *ifname)
     ifc.ifc_len = 1024;
     ifc.ifc_buf = buf;
     if(ioctl(fd, SIOCGIFCONF, &ifc) < 0) // query interfaces
+    {
+        close(fd);
         return false;
+    }
     struct ifreq *ifr = ifc.ifc_req;
     unsigned n = ifc.ifc_len/sizeof(struct ifreq);
     for (int loopback = 0; loopback <= 1; loopback++)
@@ -5385,8 +5391,8 @@ void multiConnect(const SocketEndpointArray &eps,ISocketConnectNotify &inotify,u
                     break;
             }
         }
-        delete [] elems;
     }
+    delete [] elems;
 }
 
 void multiConnect(const SocketEndpointArray &eps, PointerIArrayOf<ISocket> &retsockets,unsigned timeout)

+ 1 - 1
system/jlib/jutil.cpp

@@ -1633,7 +1633,7 @@ bool callExternalProgram(const char *progname, const StringBuffer &input, String
         char buf[4096];
         for(;;)
         {
-            size32_t r=pipe2.Read(buf, sizeof(buf));
+            int r=pipe2.Read(buf, sizeof(buf));
             if(r>0)
             {
                 output.append(r, buf);

+ 1 - 0
system/mp/mpbase.cpp

@@ -346,6 +346,7 @@ public:
             newgrp->nodes[i] = LINK(nodes[i]);
         for (rank_t k=0;k<j; k++)
             newgrp->nodes[i++] = tmp[k];
+        free(tmp);
         return newgrp;
     }
 

+ 4 - 4
system/security/zcrypt/base64.cpp

@@ -26,7 +26,7 @@ static const char pad = '=';
 ZBuffer& base64_encode(int length, const void *data, ZBuffer& result)
 {
     int estlen = (int)(length*4.0/3.0 + (length / 54) + 8);
-    char *out  = new char[estlen];
+    unsigned char *out  = (unsigned char *)malloc(estlen);
 
     const unsigned char *in = static_cast<const unsigned char *>(data);
 
@@ -81,7 +81,7 @@ ZBuffer& base64_encode(int length, const void *data, ZBuffer& result)
     out[j++] = '\n';
     out[j] = '\0';
 
-    result.setBuffer(j, (unsigned char*)out);
+    result.setBuffer(j, out);
 
     return result;
 }
@@ -110,7 +110,7 @@ ZBuffer& base64_decode(int inlen, const char *in, ZBuffer& data)
 
     int bc = 0; 
     int estlen = (int)(inlen/4.0*3.0 + 2);
-    unsigned char* buf = new unsigned char[estlen];
+    unsigned char* buf = (unsigned char *) malloc(estlen);
     for(int i = 0; i < inlen; )
     {
         if(in[i] == '\n')
@@ -144,7 +144,7 @@ ZBuffer& base64_decode(int inlen, const char *in, ZBuffer& data)
     if(bc > 0)
         data.setBuffer(bc, buf);
     else
-        delete buf;
+        free(buf);
 
     return data;
 }

+ 1 - 1
system/security/zcrypt/unzip.c

@@ -488,7 +488,7 @@ extern unzFile ZEXPORT unzOpen2 (path, pzlib_filefunc_def)
     us.central_pos = central_pos;
     us.pfile_in_zip_read = NULL;
     us.encrypted = 0;
-
+    us.num_file = 0;
 
     s=(unz_s*)ALLOC(sizeof(unz_s));
     *s=us;

+ 1 - 0
system/security/zcrypt/zip.c

@@ -610,6 +610,7 @@ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc
         if (err!=ZIP_OK)
         {
             ZCLOSE(ziinit.z_filefunc, ziinit.filestream);
+            TRYFREE(zi);
             return NULL;
         }
 

+ 2 - 2
thorlcr/activities/merge/thmerge.cpp

@@ -94,7 +94,7 @@ public:
             ActPrintLog("GlobalMergeActivityMaster::process partition generated");
             for (i=0;i<n;i++) {
                 if (abortSoon)
-                    return;
+                    break;
                 CMessageBuffer mb;
                 mb.append(n);
                 for (unsigned j = 0;j<n;j++)
@@ -104,7 +104,7 @@ public:
                 ActPrintLog("Merge process, Replying to node %d tag %d",i+1,replytags[i]);
 #endif
                 if (!container.queryJob().queryJobComm().send(mb, (rank_t)i+1, replytags[i]))
-                    return;
+                    break;
             }
         
         }

+ 0 - 2
thorlcr/thorutil/thormisc.cpp

@@ -320,8 +320,6 @@ CThorException *_ThorWrapException(IException *e, const char *format, va_list ar
 IThorException *MakeThorFatal(IException *e, int code, const char *format, ...)
 {
     CThorException *te = QUERYINTERFACE(e, CThorException);
-    va_list args;
-    va_start(args, format);
     if (te)
         te->Link();
     else

+ 1 - 1
tools/backupnode/backupnode2.cpp

@@ -364,7 +364,7 @@ public:
 bool outputPartsFiles(const char *daliserver,const char *cluster,const char *outdir, StringBuffer &errstr, bool verbose)
 {
     errstr.clear();
-    bool dalistarted;
+    bool dalistarted = false;
     if (daliserver&&*daliserver) {
         try {
             // connect to dali

+ 5 - 0
tools/esdlcmd-xml/esdlcomp.cpp

@@ -291,6 +291,7 @@ void outf(const char *fmt, ...)
     va_list args;
     va_start(args, fmt);
     voutf(fmt,args);
+    va_end(args);
 }
 
 void outf(int indents, const char *fmt, ...)
@@ -300,6 +301,7 @@ void outf(int indents, const char *fmt, ...)
     va_list args;
     va_start(args, fmt);
     voutf(fmt,args);
+    va_end(args);
 }
 
 // ------------------------------------
@@ -335,6 +337,7 @@ void indentOutf(const char* fmt, ...)
     va_list args;
     va_start(args, fmt);
     voutf(fmt,args);
+    va_end(args);
 }
 
 void indentOutf(int inc, const char* fmt, ...)
@@ -345,6 +348,7 @@ void indentOutf(int inc, const char* fmt, ...)
     va_list args;
     va_start(args, fmt);
     voutf(fmt,args);
+    va_end(args);
 }
 
 void indentOutf1(int inc, const char* fmt, ...)
@@ -354,6 +358,7 @@ void indentOutf1(int inc, const char* fmt, ...)
     va_list args;
     va_start(args, fmt);
     voutf(fmt,args);
+    va_end(args);
 }
 
 //-------------------------------------------------------------------------------------------------------------

+ 8 - 1
tools/hidl/hidlcomp.cpp

@@ -2006,6 +2006,8 @@ void ParamInfo::write_esp_unmarshall(const char *rpcvar, bool useBasePath, int i
         indent(indents);
         outf("hasValue |= m_%s.unmarshall(%s, \"%s%s\"%s%s);\n", name, rpcvar, isAttr ? "@" : "",getXmlTag(), (useBasePath) ? ", basepath" : "", getOptionalParam());
     }
+
+    free(path);
 }
 
 void ParamInfo::write_esp_unmarshall_properties(const char *propvar, const char *attachvar, int indents)
@@ -4927,7 +4929,7 @@ void EspMessageInfo::write_esp()
     if (parent)
     {
         outf("\nbool C%s::unserialize(IEspContext* ctx, CSoapValue& soapval, bool localOnly)\n{\n", name_);
-        outf("bool hasValue = false;\n");
+        outf("\tbool hasValue = false;\n");
         outf("\tif(!localOnly)\n");
         outf("\t\thasValue |= C%s::unserialize(ctx,soapval);\n", parent);
     }
@@ -6681,6 +6683,11 @@ HIDLcompiler::~HIDLcompiler()
     close(cppo);
     //close(xsvo);
     close(clwo);
+    close(espx);
+    close(espng);
+    close(espngc);
+    close(espi);
+    close(espc);
     free(packagename);
     free(filename);
 

+ 2 - 1
tools/start-stop-daemon/start-stop-daemon.c

@@ -932,7 +932,7 @@ pid_is_exec(pid_t pid, const struct stat *esb)
     struct stat sb;
 
     sprintf(lname, "/proc/%d/exe", pid);
-    nread = readlink(lname, lcontents, sizeof(lcontents));
+    nread = readlink(lname, lcontents, sizeof(lcontents)-1);
     if (nread == -1)
         return false;
 
@@ -1332,6 +1332,7 @@ run_stop_schedule(void)
     else
         fatal("internal error, please report");
 
+    n_killed = 0;
     anykilled = 0;
     retry_nr = 0;