Added some assertions to track down a win32/pe unpack problem which
shows up on 64-bit machines.
This commit is contained in:
@@ -2388,6 +2388,7 @@ void PackW32Pe::rebuildImports(upx_byte *& extrainfo)
|
|||||||
const unsigned ilen = strlen(++p) + 1;
|
const unsigned ilen = strlen(++p) + 1;
|
||||||
if (inamespos)
|
if (inamespos)
|
||||||
{
|
{
|
||||||
|
assert(oimpdlls != NULL); // FIXME
|
||||||
if (ptr_diff(importednames,oimpdlls) & 1)
|
if (ptr_diff(importednames,oimpdlls) & 1)
|
||||||
importednames -= 1;
|
importednames -= 1;
|
||||||
omemcpy(importednames + 2, p, ilen);
|
omemcpy(importednames + 2, p, ilen);
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ template <class T>
|
|||||||
inline int ptr_diff(const T *p1, const T *p2)
|
inline int ptr_diff(const T *p1, const T *p2)
|
||||||
{
|
{
|
||||||
COMPILE_TIME_ASSERT(sizeof(T) == 1)
|
COMPILE_TIME_ASSERT(sizeof(T) == 1)
|
||||||
|
assert(p1 != NULL); assert(p2 != NULL);
|
||||||
ptrdiff_t d = (const char*) p1 - (const char*) p2;
|
ptrdiff_t d = (const char*) p1 - (const char*) p2;
|
||||||
assert((int)d == d);
|
assert((int)d == d);
|
||||||
return (int) d;
|
return (int) d;
|
||||||
@@ -76,6 +77,7 @@ inline int ptr_diff(const T *p1, const T *p2)
|
|||||||
#endif
|
#endif
|
||||||
inline int ptr_diff(const void *p1, const void *p2)
|
inline int ptr_diff(const void *p1, const void *p2)
|
||||||
{
|
{
|
||||||
|
assert(p1 != NULL); assert(p2 != NULL);
|
||||||
ptrdiff_t d = (const char*) p1 - (const char*) p2;
|
ptrdiff_t d = (const char*) p1 - (const char*) p2;
|
||||||
assert((int)d == d);
|
assert((int)d == d);
|
||||||
return (int) d;
|
return (int) d;
|
||||||
|
|||||||
Reference in New Issue
Block a user