aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2002-04-24 23:05:17 +0000
committerTom Tromey <tromey@gcc.gnu.org>2002-04-24 23:05:17 +0000
commit0df9cfc799b0ff8a62f076bac4725a961f88ada2 (patch)
tree33f3e50042a21d75762c7911d1b069426e0d91be /libjava/gnu
parenta62d375fda94a2dcbb05f00037d320e04cb02d4a (diff)
downloadgcc-0df9cfc799b0ff8a62f076bac4725a961f88ada2.zip
gcc-0df9cfc799b0ff8a62f076bac4725a961f88ada2.tar.gz
gcc-0df9cfc799b0ff8a62f076bac4725a961f88ada2.tar.bz2
natCore.cc (create): Use __builtin_alloca, and compute correct length of UTF-8 encoded name.
* gnu/gcj/natCore.cc (create): Use __builtin_alloca, and compute correct length of UTF-8 encoded name. Strip leading `/'. (_Jv_RegisterResource): Use _Jv_Malloc. From-SVN: r52744
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 8e7a024..75a7ad0 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)