aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu
diff options
context:
space:
mode:
authorBryce McKinlay <bryce@mckinlay.net.nz>2003-10-02 07:10:34 +0000
committerBryce McKinlay <bryce@gcc.gnu.org>2003-10-02 08:10:34 +0100
commitfddb33d2cd74d9bfd6951802ea075ad122ad1571 (patch)
tree1ceb18e3ff3e3946ca3f2212f72ef14293c258cd /libjava/gnu
parentf4b2bde73f84ff3936cba8c8a3773c4c29a038fe (diff)
downloadgcc-fddb33d2cd74d9bfd6951802ea075ad122ad1571.tar.gz
gcc-fddb33d2cd74d9bfd6951802ea075ad122ad1571.tar.bz2
gcc-fddb33d2cd74d9bfd6951802ea075ad122ad1571.zip
re PR libgcj/12475 (Stack traces leak memory)
Fix PR libgcj/12475 * gnu/gcj/runtime/StackTrace.java (finalize): Declare. * gnu/gcj/runtime/natStackTrace.cc (finalize): New. Free "addrs". From-SVN: r72012
Diffstat (limited to 'libjava/gnu')
-rw-r--r--libjava/gnu/gcj/runtime/StackTrace.java1
-rw-r--r--libjava/gnu/gcj/runtime/natStackTrace.cc7
2 files changed, 7 insertions, 1 deletions
diff --git a/libjava/gnu/gcj/runtime/StackTrace.java b/libjava/gnu/gcj/runtime/StackTrace.java
index 684ee4fd997..c9f5a1a26e8 100644
--- a/libjava/gnu/gcj/runtime/StackTrace.java
+++ b/libjava/gnu/gcj/runtime/StackTrace.java
@@ -157,6 +157,7 @@ public final class StackTrace
}
private native void fillInStackTrace(int n, int offset);
+ protected native void finalize();
private static native MethodRef getCompiledMethodRef(RawData addr);
private static IdentityHashMap map = new IdentityHashMap();
diff --git a/libjava/gnu/gcj/runtime/natStackTrace.cc b/libjava/gnu/gcj/runtime/natStackTrace.cc
index af8889beb52..5e5aed87e5c 100644
--- a/libjava/gnu/gcj/runtime/natStackTrace.cc
+++ b/libjava/gnu/gcj/runtime/natStackTrace.cc
@@ -200,4 +200,9 @@ gnu::gcj::runtime::StackTrace::update(void)
}
}
-
+void
+gnu::gcj::runtime::StackTrace::finalize(void)
+{
+ if (addrs != NULL)
+ _Jv_Free (addrs);
+}