|
From: <sv...@va...> - 2007-01-15 20:13:35
|
Author: njn
Date: 2007-01-15 11:16:30 +0000 (Mon, 15 Jan 2007)
New Revision: 6521
Log:
God, get it right.
Modified:
branches/ORIGIN_TRACKING/memcheck/mc_main.c
Modified: branches/ORIGIN_TRACKING/memcheck/mc_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ORIGIN_TRACKING/memcheck/mc_main.c 2007-01-15 07:06:23 UTC (=
rev 6520)
+++ branches/ORIGIN_TRACKING/memcheck/mc_main.c 2007-01-15 11:16:30 UTC (=
rev 6521)
@@ -1596,11 +1596,12 @@
// ExeContext pointer for the undefined-value origin-tracking.
=20
// Round up 'a' to the start of a 4-byte boundary. Reduce 'len'
- // accordingly. =20
+ // accordingly. If that would make len <=3D 0, don't do anything.
UWord a_roundup_amount =3D VG_ROUNDUP(a, 4) - a;
a +=3D a_roundup_amount;
- len -=3D a_roundup_amount;
-
+ if (len <=3D a_roundup_amount) {
+ return;
+ }
// Now we can start painting 4-byte values.
for (i =3D 0; i < VG_ROUNDDN(len, 4); i +=3D 4) {
*(UInt*)(a + i) =3D obfusc_ec_low32;
|