diff options
| -rw-r--r-- | ChangeLog | 6 | ||||
| -rw-r--r-- | src/array_fun.h | 10 | ||||
| -rw-r--r-- | test/array_funTest.cc | 7 |
3 files changed, 23 insertions, 0 deletions
@@ -1,5 +1,11 @@ 2009-02-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net> + Added operator T* + * src/array_fun.h + * test/array_funTest.cc + +2009-02-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net> + Use dynamically allocated char array to detect memory access violation. * src/DHTRoutingTableDeserializer.cc diff --git a/src/array_fun.h b/src/array_fun.h index 0c2327f4..157456fb 100644 --- a/src/array_fun.h +++ b/src/array_fun.h @@ -250,6 +250,16 @@ public: { return _array[index]; } + + operator T*() + { + return _array; + } + + operator const T*() const + { + return _array; + } }; } // namespace aria2 diff --git a/test/array_funTest.cc b/test/array_funTest.cc index 19cf2bfc..6e474fcc 100644 --- a/test/array_funTest.cc +++ b/test/array_funTest.cc @@ -92,6 +92,10 @@ static void arrayPtrConst(const array_ptr<struct array_funTest::X>& ax) CPPUNIT_ASSERT_EQUAL(99, ax[2].m); } +static void arrayPtrCast(struct array_funTest::X* x) {} + +static void arrayPtrConstCast(const struct array_funTest::X* x) {} + void array_funTest::testArrayPtr() { array_ptr<struct X> ax(new struct X[10]); @@ -100,6 +104,9 @@ void array_funTest::testArrayPtr() CPPUNIT_ASSERT_EQUAL(100, ax[3].m); CPPUNIT_ASSERT_EQUAL(99, ax[2].m); arrayPtrConst(ax); + + arrayPtrCast(ax); + arrayPtrConstCast(ax); } } // namespace aria2 |
