Problem when creating a local variable in a method

"Koduru, Rajendra Kumar Reddy" <[email protected]>
Newsgroups gmane.comp.jakarta.bcel.user
Message-ID <[email protected]>
Hi All,
	
	I am new to BCEL. Just started using it. I had a problem with
local variable insertion to a method dynamically. 
	I tried to find in internet resoruces , but could not, could you
please help me in this regard.

	I am trying to open the modified class with decompiler, a dialog
appears, when decompiling saying 
			The instruction at "0x..." reference memory at
"...". The memory could not be read.

	however a jad is created, in which all the methods starting from
the modified method no more appear in the class file, i.e methods are
gettign 	corrupted.

	Please have a look at the following code[1] and please correct
me..

	should I do some updations to local variable table after
insertion of a local variable or is it automatically updated ????

	please help me in this regard.

Thank you 
Reddy


	class A{

		public Method instr( JavaClass javaClass, 
                                    Method method, 
						ConstantPoolGen poolGen,

						InstructionFactory
factory ) {

		MethodGen mgen = new MethodGen(method,
javaClass.getClassName(), poolGen);

		InstructionList ilist = mgen.getInstructionList();
		InstructionList ilist_start = new InstructionList();
		insertStaticCallAtEntry(mgen, poolGen, factory,
ilist_start, methodName);

		InstructionHandle ihss = ilist.insert( ihandle_start,
ilist_start);
	      ilist.redirectBranches( ihandle_start, ihss); 
		mgen.setMaxStack();
		return mgen.getMethod();
		}

		private void insertStaticCallAtEntry( MethodGen mgen
                                         , ConstantPoolGen poolGen 
                                         , InstructionFactory factory
                                         , InstructionList ilist_start 
                                         , String method_call) {
        
	
ilist_start.append(factory.createInvoke(NAME_OF_CLASS_CONTAINER,
method_call, Type.VOID,
                                            new Type[]{},
Constants.INVOKESTATIC));

      	  LocalVariableGen localVar= mgen.addLocalVariable("obj",new
ObjectType("java.lang.Object"), null, null);
        
	        int obj = localVar.getIndex();
        
      	  Tracer.trace("index is "+ obj);

	        localVar.setStart(ilist_start.append(new ASTORE(obj)));

	    } 

	}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.