title: Android ICS 4.0 NDK NewStringUTF is crashing down the App
body: <p>I have a method in JNI C/C++ which takes jstring and returns back jstring some thing like as below, </p>
  
  <pre><code>  NATIVE_CALL(jstring, method)(JNIEnv * env, jobject obj, jstring filename)
    {
  
  // Get jstring into C string format.
    const char* cs = env-&gt;GetStringUTFChars (filename, NULL);
    char *file_path = new char [strlen (cs) + 1]; // +1 for null terminator
    sprintf (file_path, "%s", cs);
    env-&gt;ReleaseStringUTFChars (filename, cs);
  
  
    reason_code = INTERNAL_FAILURE;
    char* info = start_module(file_path);  
  
  
    jstring jinfo ;
  
  
    if(info==NULL)
    {
        jinfo = env-&gt;NewStringUTF(NULL);
    }
    else
    {
        jinfo = env-&gt;NewStringUTF(info);
  
    }
  
  
    delete info;
  
    info = NULL;
    return jinfo;
    }
  </code></pre>
  
  <p>The code works perfectly with prior android 4.0 versions like 2.2,2.3 and so on. With ICS 4.0 check JNI is on by default and because of it the app crashes throwing the following error</p>
  
  <pre><code> 08-25 22:16:35.480: W/dalvikvm(24027): **JNI WARNING: input is not valid Modified UTF-8: illegal  continuation byte 0x40**
  08-25 22:16:35.480: W/dalvikvm(24027):              
  08-25 22:16:35.480: W/dalvikvm(24027): ==========
  08-25 22:16:35.480: W/dalvikvm(24027): /tmp/create
  08-25 22:16:35.480: W/dalvikvm(24027): ==========
  08-25 22:16:35.480: W/dalvikvm(24027): databytes,indoorgames,drop
  08-25 22:16:35.480: W/dalvikvm(24027): ==========���c_ag����ϋ@�ډ@�����@'
   08-25 22:16:35.480: W/dalvikvm(24027):              in Lincom/inter       /ndk/comNDK;.rootNDK:(Ljava/lang/String;)Ljava/lang/String; **(NewStringUTF)**
  08-25 22:16:35.480: I/dalvikvm(24027): "main" prio=5 tid=1 NATIVE
  08-25 22:16:35.480: I/dalvikvm(24027):   | group="main" sCount=0 dsCount=0 obj=0x40a4b460   self=0x1be1850
  08-25 22:16:35.480: I/dalvikvm(24027):   | sysTid=24027 nice=0 sched=0/0 cgrp=default handle=1074255080
  08-25 22:16:35.490: I/dalvikvm(24027):   | schedstat=( 49658000 26700000 48 ) utm=1 stm=3 core=1
  08-25 22:16:35.490: I/dalvikvm(24027):   at comrootNDK(Native Method)
  </code></pre>
  
  <p>I am clueless as to where i am wrong. If you see above NewStringUTF is adding some garbage value to the c Char* bytes .</p>
  
  <ol>
  <li>Any idea about why this is happening</li>
  <li>Any alternative solution to achieve the above is welcome </li>
  </ol>
  
  <p>I really appreciate if one of you can help me in . Thanks in advance</p>
  
  <p>regds
  me</p>