I wrote:
> Rather than the much simpler:
>
>   private StackTraceElement[] stackTrace;
>
>   public Throwable fillInStackTrace() {
>     stackTrace = VMThrowable.fillInStackTrace(this).getStackTrace(this);
>     return this;
>   }
>
>   public StackTraceElement[] getStackTrace() {
>     return stackTrace;
>   }
>
> ...
> What did I miss?

Well the first thing I missed is that fillInStacktrace can return null so
the above should be:
   public Throwable fillInStackTrace() {
     VMThrowable vmt = VMThrowable.fillInStackTrace(this);
     if (vmt != null)
       stackTrace = vmt.getStackTrace(this);
     else // could check if already  zero length array
       stacktrace = new StackTraceElement[0];
     return this;
   }

I thought it might have to do with making defensive copies but as far as I
can see the original code doesn't achieve that either.

David Holmes



_______________________________________________
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath

Reply via email to