2003/09/20 05:03:47
[org.ibex.core.git] / src / org / xwt / plat / GCJ.cc
index 030dfbe..3050a2b 100644 (file)
@@ -5,6 +5,10 @@
 #include <gcj/cni.h>
 #include <gcj/array.h>
 extern "C" {
+
+// hack for broken Solaris headers
+#define _WCHAR_T
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <setjmp.h>
@@ -21,15 +25,15 @@ extern "C" {
 
 // builtin.xwar /////////////////////////////////////////////////////////
 
-extern unsigned char builtin_xwar[];
-extern int builtin_xwar_length;
+extern unsigned char builtin_bytes[];
+extern int builtin_length;
 
 java::io::InputStream* org::xwt::plat::GCJ::_getBuiltinInputStream() {
-    jbyteArray ret = JvNewByteArray(builtin_xwar_length);
-    memcpy(elements(ret), builtin_xwar, builtin_xwar_length);
+    jbyteArray ret = JvNewByteArray(builtin_length);
+    memcpy(elements(ret), builtin_bytes, builtin_length);
     return new java::io::ByteArrayInputStream(ret);
 }
-           
+
 
 
 // JPEG ////////////////////////////////////////////////////////////////
@@ -121,3 +125,8 @@ void org::xwt::plat::GCJ$JPEG::nativeDecompress() {
     jpeg_destroy_decompress(&cinfo);
 }
 
+// C++ new/delete operators (JvMalloc never fails)
+void* operator new(size_t size) { return JvMalloc(size); }
+void* operator new[](size_t size) { return JvMalloc(size);}
+void operator delete(void *p) { JvFree(p); }
+void operator delete[](void *p) { JvFree(p); }