diff options
author | Tom Tromey <tromey@redhat.com> | 2002-04-24 23:05:17 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2002-04-24 23:05:17 +0000 |
commit | 0df9cfc799b0ff8a62f076bac4725a961f88ada2 (patch) | |
tree | 33f3e50042a21d75762c7911d1b069426e0d91be /libjava/gnu | |
parent | a62d375fda94a2dcbb05f00037d320e04cb02d4a (diff) | |
download | gcc-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.cc | 14 |
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) |