summaryrefslogtreecommitdiffstats
path: root/libjava/gnu
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2002-04-24 23:05:17 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2002-04-24 23:05:17 +0000
commit882549f1509905a43de2dbd2f422efc7ced7eee5 (patch)
tree33f3e50042a21d75762c7911d1b069426e0d91be /libjava/gnu
parent1b9a507b56932dcac42e51be12db74b0be78e1f1 (diff)
downloadppe42-gcc-882549f1509905a43de2dbd2f422efc7ced7eee5.tar.gz
ppe42-gcc-882549f1509905a43de2dbd2f422efc7ced7eee5.zip
* gnu/gcj/natCore.cc (create): Use __builtin_alloca, and compute
correct length of UTF-8 encoded name. Strip leading `/'. (_Jv_RegisterResource): Use _Jv_Malloc. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@52744 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu')
-rw-r--r--libjava/gnu/gcj/natCore.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/libjava/gnu/gcj/natCore.cc b/libjava/gnu/gcj/natCore.cc
index 8e7a0240527..75a7ad05ae1 100644
--- a/libjava/gnu/gcj/natCore.cc
+++ b/libjava/gnu/gcj/natCore.cc
@@ -1,6 +1,6 @@
// natCore -- C++ side of Core
-/* Copyright (C) 2001 Free Software Foundation
+/* Copyright (C) 2001, 2002 Free Software Foundation
This file is part of libgcj.
@@ -40,7 +40,7 @@ void _Jv_RegisterResource (void *vptr)
// These are permanent data structures for now. This routine is
// called from a static constructor, so we shouldn't depend on too
// much existing infrastructure.
- core_chain *cc = (core_chain *) malloc (sizeof (core_chain));
+ core_chain *cc = (core_chain *) _Jv_Malloc (sizeof (core_chain));
cc->name_length = ((int *)rptr)[0];
cc->data_length = ((int *)rptr)[1];
@@ -56,10 +56,18 @@ void _Jv_RegisterResource (void *vptr)
gnu::gcj::Core *
gnu::gcj::Core::create (jstring name)
{
- char buf[name->length() + 1];
+ char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (name) + 1);
jsize total = JvGetStringUTFRegion (name, 0, name->length(), buf);
buf[total] = '\0';
+ // Usually requests here end up as an absolute URL. We strip the
+ // initial `/'.
+ if (buf[0] == '/')
+ {
+ ++buf;
+ --total;
+ }
+
core_chain *node = root;
while (node)
OpenPOWER on IntegriCloud