summaryrefslogtreecommitdiff
path: root/secblock.h
diff options
context:
space:
mode:
authorweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2004-07-18 09:23:13 +0000
committerweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2004-07-18 09:23:13 +0000
commitb3fd345b06263efcf0b580b98d3d865074a3942e (patch)
treed63b028730affe55ed8531271c412c47599968aa /secblock.h
parentc3f9cc095730edb525775115a94a521229eb08d2 (diff)
downloadcryptopp-b3fd345b06263efcf0b580b98d3d865074a3942e.tar.gz
fix compile with -msse2 on systems without memalign()
git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@184 57ff6487-cd31-0410-9ec3-f628ee90f5f0
Diffstat (limited to 'secblock.h')
-rw-r--r--secblock.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/secblock.h b/secblock.h
index ea95e35..6797144 100644
--- a/secblock.h
+++ b/secblock.h
@@ -59,9 +59,11 @@ typename A::pointer StandardReallocate(A& a, T *p, typename A::size_type oldSize
if (preserve)
{
- typename A::pointer newPointer = a.allocate(newSize, NULL);
+ A b;
+ typename A::pointer newPointer = b.allocate(newSize, NULL);
memcpy(newPointer, p, sizeof(T)*STDMIN(oldSize, newSize));
a.deallocate(p, oldSize);
+ std::swap(a, b);
return newPointer;
}
else
@@ -181,7 +183,11 @@ public:
return p;
}
- return StandardReallocate(*this, p, oldSize, newSize, preserve);
+ pointer newPointer = allocate(newSize, NULL);
+ if (preserve)
+ memcpy(newPointer, p, sizeof(T)*STDMIN(oldSize, newSize));
+ deallocate(p, oldSize);
+ return newPointer;
}
size_type max_size() const {return STDMAX(m_fallbackAllocator.max_size(), S);}