Prechádzať zdrojové kódy

Fix regression in roxiemem resizing rowsets smaller

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Gavin Halliday 13 rokov pred
rodič
commit
ed0003d43b
1 zmenil súbory, kde vykonal 10 pridanie a 2 odobranie
  1. 10 2
      roxie/roxiemem/roxiemem.cpp

+ 10 - 2
roxie/roxiemem/roxiemem.cpp

@@ -1385,10 +1385,18 @@ public:
     {
         assertex(newsize);
         assertex(!HeapletBase::isShared(original));
-        assertex(newsize >= oldsize);
         capacity = HeapletBase::capacity(original);
         if (newsize <= capacity)
-            return original;
+        {
+            if (newsize >= oldsize || roundup(newsize) == roundup(oldsize))
+                return original;
+
+            void *ret = allocate(newsize, activityId);
+            memcpy(ret, original, newsize);
+            HeapletBase::release(original);
+            capacity = HeapletBase::capacity(ret);
+            return ret;
+        }
         else
         {
             void *ret = allocate(newsize, activityId);