diff options
| author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-04-24 23:05:17 +0000 |
|---|---|---|
| committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-04-24 23:05:17 +0000 |
| commit | 882549f1509905a43de2dbd2f422efc7ced7eee5 (patch) | |
| tree | 33f3e50042a21d75762c7911d1b069426e0d91be /libjava/gnu | |
| parent | 1b9a507b56932dcac42e51be12db74b0be78e1f1 (diff) | |
| download | ppe42-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.cc | 14 |
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) |

