Bläddra i källkod

Merge pull request #1242 from ghalliday/roxiemem2

Fix regression in roxiemem resizing rowsets smaller

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 13 år sedan
förälder
incheckning
8d6b552ab7
1 ändrade filer med 10 tillägg och 2 borttagningar
  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);