summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--src/array_fun.h10
-rw-r--r--test/array_funTest.cc7
3 files changed, 23 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 5fb272d8..479f93c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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