[ https://issues.apache.org/jira/browse/STDCXX-761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12585316#action_12585316 ] elemings edited comment on STDCXX-761 at 4/3/08 3:37 PM: ------------------------------------------------------------- Travis, If you could, give the following patch a whirl (or quick review at least). {noformat} $ svn diff Index: tests/src/new.cpp =================================================================== --- tests/src/new.cpp (revision 644444) +++ tests/src/new.cpp (working copy) @@ -604,6 +604,17 @@ return ret; } +static void +rwt_checkpoint_compare (_RWSTD_SIZE_T* diffs, _RWSTD_SIZE_T n, + const _RWSTD_SIZE_T* st0, const _RWSTD_SIZE_T* st1, + bool& diff_0) +{ + for (_RWSTD_SIZE_T i = 0; i != n; ++i) { + diffs [i] = st1 [i] - st0 [i]; + if (diffs [i]) + diff_0 = false; + } +} _TEST_EXPORT rwt_free_store* rwt_checkpoint (const rwt_free_store *st0, const rwt_free_store *st1) @@ -616,21 +627,24 @@ // of the free_store specified by the arguments static rwt_free_store diff; - memset (&diff, 0, sizeof diff); - size_t* diffs = diff.new_calls_; - const size_t* st0_args = st0->new_calls_; - const size_t* st1_args = st1->new_calls_; - bool diff_0 = true; // difference of 0 (i.e., none) - for (size_t i = 0; i != 16; ++i) { - diffs [i] = st1_args [i] - st0_args [i]; - if (diffs [i]) - diff_0 = false; - } +#define EXTENT(array) (sizeof (array) / sizeof(*array)) +#define COMPARE(member) \ + rwt_checkpoint_compare (diff.member, EXTENT(diff.member),\ + st0->member, st1->member, diff_0) + COMPARE(new_calls_); + COMPARE(delete_calls_); + COMPARE(delete_0_calls_); + COMPARE(blocks_); + COMPARE(bytes_); + COMPARE(max_blocks_); + COMPARE(max_bytes_); + COMPARE(max_block_size_); + if (diff_0) return 0; {noformat} The 0.new test seems to be okay with it. Thanks, Brad. was (Author: elemings): Travis, If you could, give the following patch a whirl (or quick review at least). ----- $ svn diff Index: tests/src/new.cpp =================================================================== --- tests/src/new.cpp (revision 644444) +++ tests/src/new.cpp (working copy) @@ -604,6 +604,17 @@ return ret; } +static void +rwt_checkpoint_compare (_RWSTD_SIZE_T* diffs, _RWSTD_SIZE_T n, + const _RWSTD_SIZE_T* st0, const _RWSTD_SIZE_T* st1, + bool& diff_0) +{ + for (_RWSTD_SIZE_T i = 0; i != n; ++i) { + diffs [i] = st1 [i] - st0 [i]; + if (diffs [i]) + diff_0 = false; + } +} _TEST_EXPORT rwt_free_store* rwt_checkpoint (const rwt_free_store *st0, const rwt_free_store *st1) @@ -616,21 +627,24 @@ // of the free_store specified by the arguments static rwt_free_store diff; - memset (&diff, 0, sizeof diff); - size_t* diffs = diff.new_calls_; - const size_t* st0_args = st0->new_calls_; - const size_t* st1_args = st1->new_calls_; - bool diff_0 = true; // difference of 0 (i.e., none) - for (size_t i = 0; i != 16; ++i) { - diffs [i] = st1_args [i] - st0_args [i]; - if (diffs [i]) - diff_0 = false; - } +#define EXTENT(array) (sizeof (array) / sizeof(*array)) +#define COMPARE(member) \ + rwt_checkpoint_compare (diff.member, EXTENT(diff.member),\ + st0->member, st1->member, diff_0) + COMPARE(new_calls_); + COMPARE(delete_calls_); + COMPARE(delete_0_calls_); + COMPARE(blocks_); + COMPARE(bytes_); + COMPARE(max_blocks_); + COMPARE(max_bytes_); + COMPARE(max_block_size_); + if (diff_0) return 0; ----- The 0.new test seems to be okay with it. Thanks, Brad. > [HP aCC 6.16] Out of bound access in new.cpp > -------------------------------------------- > > Key: STDCXX-761 > URL: https://issues.apache.org/jira/browse/STDCXX-761 > Project: C++ Standard Library > Issue Type: Sub-task > Components: Test Driver > Affects Versions: 4.2.0 > Environment: $ uname -sr && aCC -V > HP-UX B.11.31 > aCC: HP C/aC++ B3910B A.06.16 [Nov 26 2007] > Reporter: Scott (Yu) Zhong > Assignee: Eric Lemings > Fix For: 4.2.1 > > Original Estimate: 2h > Remaining Estimate: 2h > > When compiled with HP aCC 6.16 +w +O, the test driver source file [new.cpp|http://svn.apache.org/repos/asf/stdcxx/trunk/tests/src/new.cpp] produces the warnings below: > {noformat} > aCC -c -I$(TOPDIR)/include -I$(BUILDDIR)/include -I$(TOPDIR)/tests/include -AA +O2 +DD64 +w \ > +W392 +W655 +W684 +W818 +W819 +W849 +W2193 +W2236 +W2261 +W2340 +W2401 +W2487 +W4227 \ > +W4229 +W4231 +W4235 +W4237 +W4249 +W4255 +W4272 +W4284 +W4285 +W4286 +W4296 +W4297 +W3348 \ > $(TOPDIR)/tests/src/new.cpp > "$(TOPDIR)/tests/src/new.cpp", line 629, procedure rwt_checkpoint: warning #20206-D: Out of bound access (In expression "(unsigned long long*)(&diff)->new_calls_+i", (&diff)->new_calls_ (type: unsigned long long [2]) has byte range [0 .. 15], writing byte range [0 .. 127].) > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.