浏览代码

Merge branch 'candidate-7.0.x' into candidate-7.2.x

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 6 年之前
父节点
当前提交
2b97421ff8
共有 3 个文件被更改,包括 10 次插入6 次删除
  1. 4 4
      docs/EN_US/ECLLanguageReference/ECLR_mods/RecordStructure.xml
  2. 2 2
      ecl/hqlcpp/hqlhtcpp.cpp
  3. 4 0
      ecl/hthor/hthorkey.cpp

+ 4 - 4
docs/EN_US/ECLLanguageReference/ECLR_mods/RecordStructure.xml

@@ -301,8 +301,8 @@
             <entry>A previously defined data field, which implicitly provides
             the <emphasis>datatype</emphasis>,
             <emphasis>identifier</emphasis>, and
-            <emphasis>defaultvalue</emphasis> for the new field--inherited from
-            the <emphasis>sourcefield</emphasis>.</entry>
+            <emphasis>defaultvalue</emphasis> for the new field--inherited
+            from the <emphasis>sourcefield</emphasis>.</entry>
           </row>
 
           <row>
@@ -781,7 +781,7 @@ END;</programlisting>
     case field name, and the default value for Repeated is "Row." For example,
     this demonstrates "Container/Repeated":</para>
 
-    <programlisting>DATASET(PeopleNames) People{xpath('people/name'])};
+    <programlisting>DATASET(PeopleNames) People{xpath('people/name')};
           /*matches: &lt;people&gt;
                         &lt;name&gt;Gavin&lt;/name&gt;
                         &lt;name&gt;Ricardo&lt;/name&gt;
@@ -789,7 +789,7 @@ END;</programlisting>
 
     <para>This demonstrates "/Repeated":</para>
 
-    <programlisting>DATASET(Names) Names{xpath('/name'])};
+    <programlisting>DATASET(Names) Names{xpath('/name')};
           /*matches: &lt;name&gt;Gavin&lt;/name&gt;
                      &lt;name&gt;Ricardo&lt;/name&gt; */</programlisting>
 

+ 2 - 2
ecl/hqlcpp/hqlhtcpp.cpp

@@ -17966,7 +17966,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySOAP(BuildCtx & ctx, IHqlExpre
         //virtual const char * getInputIteratorPath()
         IHqlExpression * xpath = expr->queryAttribute(xpathAtom);
         if (xpath)
-            doBuildVarStringFunction(instance->classctx, "getInputIteratorPath", xpath->queryChild(0));
+            doBuildVarStringFunction(instance->startctx, "getInputIteratorPath", xpath->queryChild(0));
 
         IHqlExpression * onFail = expr->queryAttribute(onFailAtom);
         if (onFail)
@@ -18122,7 +18122,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivityHTTP(BuildCtx & ctx, IHqlExpre
         //virtual const char * getInputIteratorPath()
         IHqlExpression * xpath = expr->queryAttribute(xpathAtom);
         if (xpath)
-            doBuildVarStringFunction(instance->classctx, "getInputIteratorPath", xpath->queryChild(0));
+            doBuildVarStringFunction(instance->startctx, "getInputIteratorPath", xpath->queryChild(0));
 
         IHqlExpression * onFail = expr->queryAttribute(onFailAtom);
         if (onFail)

+ 4 - 0
ecl/hthor/hthorkey.cpp

@@ -2876,6 +2876,7 @@ public:
     ~CJoinGroup()
     {
         ReleaseRoxieRow(left);
+        join = nullptr; // not required, but clear to highlight any race conditions
     }
 
     MatchSet * getMatchSet()
@@ -2905,6 +2906,9 @@ public:
     inline void noteEnd()
     {
         assertex(!complete());
+        //Another completing group could cause this group to be processed once endMarkersPending is set to 0
+        //So link this object to ensure it is not disposed of while this function is executing
+        Linked<CJoinGroup> saveThis(this);
         if (atomic_dec_and_test(&groupStart->endMarkersPending))
         {
             join->onComplete(groupStart);