Fixed bug discovered by Lin Li.  My check for whether an exception handler unit might catch an exception thrown by the first unit in the method was flawed: it assumed that if the throwing unit has no unexceptional predecessors it must be the method's entry point. But the initial units in almost all exception handlers have no unexceptional predecessors (doh!), so the flawed check mistakenly designated as a graph head any handler which might catch an exception thrown by the initial unit of another handler (or indeed, of the same handler---the bug was revealed by a synchronized block handler that protected itself), even if neither of the handlers catch any exceptions thrown by the method's entry point.
Fixed bug discovered by Lin Li.  My check for whether an
exception handler unit might catch an exception thrown by the
first unit in the method was flawed: it assumed that if the
throwing unit has no unexceptional predecessors it must be the
method's entry point. But the initial units in almost all
exception handlers have no unexceptional predecessors (doh!), so
the flawed check mistakenly designated as a graph head any
handler which might catch an exception thrown by the initial unit
of another handler (or indeed, of the same handler---the bug was
revealed by a synchronized block handler that protected itself),
even if neither of the handlers catch any exceptions thrown by
the method's entry point.


mbenz89/soot,cfallin/soot,mbenz89/soot,cfallin/soot,plast-lab/soot,mbenz89/soot,xph906/SootNew,anddann/soot,cfallin/soot,xph906/SootNew,xph906/SootNew,plast-lab/soot,cfallin/soot,plast-lab/soot,anddann/soot,anddann/soot,mbenz89/soot,xph906/SootNew,anddann/soot