<div dir="ltr">Dear Eric, sorry, i forgot to write this.<div><br></div><div><div>Test java app before transformation:</div><div><div>public static void main(String[] args) {</div><div><br></div><div>        int i = 0;</div><div>        StringBuilder str = new StringBuilder();</div><div>        synchronized(str){</div><div>            str.append(&quot;fff&quot;);</div><div>        }</div><div>        i++;</div><div>        System.out.println(i);</div><div>    }</div></div></div><div><br><div>Expected result after transformation:</div><div><br></div><div><div>public static void main(String[] args) {</div><div><br></div><div>//I want to create Local variable, e.g. myInt</div><div>        int i = 0;</div><div>        StringBuilder str = new StringBuilder();</div><div>//I want to insert here</div><div>//myInt = 500;</div><div>        synchronized(str){</div><div>//myInt = myInt + 500;</div><div>//System.out.println(myInt);</div><div>            str.append(&quot;fff&quot;);</div><div>        }</div><div>        i++;</div><div>        System.out.println(i);</div><div>    }</div></div></div><div><br></div><div>Actually Result:</div><div>java.lang.NullPointerException at line in my transformation:<br></div><div>units.insertAfter(Jimple.v().newInvokeStmt(Jimple.v().newVirtualInvokeExpr(tmpRef, toCall.makeRef(), intLocal)), as3);<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-02-01 16:08 GMT+03:00 Bodden, Eric <span dir="ltr">&lt;<a href="mailto:eric.bodden@sit.fraunhofer.de" target="_blank">eric.bodden@sit.fraunhofer.de</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear Roman,<br>
<br>
it&#39;s hard to say why it does not work when we don&#39;t know what the code is intended to do and what it actually does do.<br>
<br>
Cheers,<br>
Eric<br>
<div><div class="h5"><br>
&gt; On 01.02.2015, at 07:28, Roman Petriev &lt;<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Hello everybody!<br>
&gt;<br>
&gt; I try to do test transformation, but I have some problems ...<br>
&gt; Code:<br>
&gt;<br>
&gt;         Chain units = b.getUnits();<br>
&gt;<br>
&gt;         Iterator stmtIt = units.snapshotIterator();<br>
&gt;         while(stmtIt.hasNext())<br>
&gt;         {<br>
&gt;             Stmt stmt = (Stmt)stmtIt.next();<br>
&gt;             if(stmt instanceof EnterMonitorStmt)<br>
&gt;             {<br>
&gt;                 Local intLocal = Jimple.v().newLocal(&quot;myInt&quot;, IntType.v());<br>
&gt;                 b.getLocals().add(intLocal);<br>
&gt;                 AssignStmt as1 = Jimple.v().newAssignStmt(intLocal, IntConstant.v(500));<br>
&gt;                 units.insertBefore(as1, stmt);<br>
&gt;                 AssignStmt as2 = Jimple.v().newAssignStmt(intLocal, Jimple.v().newAddExpr(intLocal, IntConstant.v(500)));<br>
&gt;                 units.insertAfter(as2, stmt);<br>
&gt;                 Local tmpRef = Jimple.v().newLocal(&quot;tmpRef&quot;, RefType.v(&quot;java.io.PrintStream&quot;));<br>
&gt;                 AssignStmt as3 = Jimple.v().newAssignStmt(tmpRef,<br>
&gt;                         Jimple.v().newStaticFieldRef(Scene.v().getField(&quot;&lt;java.lang.System: java.io.PrintStream out&gt;&quot;).makeRef()));<br>
&gt;                 units.insertAfter(as3, stmt);<br>
&gt;                 SootMethod toCall = Scene.v().getMethod(&quot;&lt;java.io.PrintStream: void println(int)&gt;&quot;);<br>
&gt;<br>
&gt;                 units.insertAfter(Jimple.v().newInvokeStmt(Jimple.v().newVirtualInvokeExpr(tmpRef, toCall.makeRef(), intLocal)), as3);<br>
&gt;             }<br>
&gt;         }<br>
&gt;<br>
&gt; What&#39;s wrong? Could someone explain, why this code isn&#39;t work?<br>
&gt; Thanks for any help.<br>
&gt;<br>
&gt; Best regards,<br>
&gt; Roman.<br>
</div></div>&gt; _______________________________________________<br>
&gt; Soot-list mailing list<br>
&gt; <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br>
&gt; <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
<br>
--<br>
Prof. Eric Bodden, Ph.D., <a href="http://sse.ec-spride.de/" target="_blank">http://sse.ec-spride.de/</a> <a href="http://bodden.de/" target="_blank">http://bodden.de/</a><br>
Head of Secure Software Engineering at Fraunhofer SIT, TU Darmstadt and EC SPRIDE<br>
Tel: +49 6151 16-75422    Fax: +49 6151 869-127<br>
Room B5.11, Fraunhofer SIT, Rheinstraße 75, 64295 Darmstadt<br>
<br>
</blockquote></div><br></div>