Commit 2721806e by Tom Tromey Committed by Tom Tromey

prims.cc (_Jv_NewObjectArray): Use const_cast to initialize length field of array.

	* prims.cc (_Jv_NewObjectArray): Use const_cast to initialize
	length field of array.
	(_Jv_NewPrimArray): Likewise.
	* gcj/array.h (__JArray): `length' field now const.  Added
	constructor.

From-SVN: r37771
parent 18205ca3
2000-11-26 Tom Tromey <tromey@cygnus.com>
* prims.cc (_Jv_NewObjectArray): Use const_cast to initialize
length field of array.
(_Jv_NewPrimArray): Likewise.
* gcj/array.h (__JArray): `length' field now const. Added
constructor.
2000-11-26 Anthony Green <green@redhat.com> 2000-11-26 Anthony Green <green@redhat.com>
* javax/naming/spi/NamingManager.java, * javax/naming/spi/NamingManager.java,
......
...@@ -17,8 +17,15 @@ extern "Java" { ...@@ -17,8 +17,15 @@ extern "Java" {
class __JArray : public java::lang::Object class __JArray : public java::lang::Object
{ {
protected:
// This is just a hack to work around a warning emitted by the C++
// compiler. We initialize `length' evilly, but it doesn't know
// that.
__JArray () : length (0)
{
}
public: public:
jsize length; const jsize length;
friend jsize JvGetArrayLength (__JArray*); friend jsize JvGetArrayLength (__JArray*);
}; };
......
...@@ -411,8 +411,10 @@ _Jv_NewObjectArray (jsize count, jclass elementClass, jobject init) ...@@ -411,8 +411,10 @@ _Jv_NewObjectArray (jsize count, jclass elementClass, jobject init)
obj = (jobjectArray) _Jv_AllocArray (size, klass); obj = (jobjectArray) _Jv_AllocArray (size, klass);
if (__builtin_expect (! obj, false)) if (__builtin_expect (! obj, false))
JvThrow (no_memory); JvThrow (no_memory);
obj->length = count; // Cast away const.
jobject *ptr = elements (obj); jsize *lp = const_cast<jsize *> (&obj->length);
*lp = count;
jobject *ptr = elements(obj);
// We know the allocator returns zeroed memory. So don't bother // We know the allocator returns zeroed memory. So don't bother
// zeroing it again. // zeroing it again.
if (init) if (init)
...@@ -446,7 +448,9 @@ _Jv_NewPrimArray (jclass eltype, jint count) ...@@ -446,7 +448,9 @@ _Jv_NewPrimArray (jclass eltype, jint count)
__JArray *arr = (__JArray*) _Jv_AllocObj (size + elsize * count, klass); __JArray *arr = (__JArray*) _Jv_AllocObj (size + elsize * count, klass);
if (__builtin_expect (! arr, false)) if (__builtin_expect (! arr, false))
JvThrow (no_memory); JvThrow (no_memory);
arr->length = count; // Cast away const.
jsize *lp = const_cast<jsize *> (&arr->length);
*lp = count;
// Note that we assume we are given zeroed memory by the allocator. // Note that we assume we are given zeroed memory by the allocator.
return arr; return arr;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment