root / trunk / data / javasqlite / null16.diff

Revision 184, 2.2 kB (checked in by saurik, 8 months ago)

Upgraded to the latest JavaSQLite (20080130).

  • native/sqlite_jni.c

    diff -ru javasqlite-20080130/native/sqlite_jni.c javasqlite-20080130+iPhone/native/sqlite_jni.c
    old new  
    33603360    jsize len16; 
    33613361    const jchar *sql16, *tail = 0; 
    33623362    int ret; 
     3363    int i; 
     3364    jchar *sql2; 
    33633365 
    33643366    if (!h) { 
    33653367        throwclosed(env); 
     
    33853387    } 
    33863388    h->env = env; 
    33873389    sql16 = (*env)->GetStringChars(env, sql, 0); 
     3390    sql2 = malloc(len16 + sizeof(jchar)); 
     3391    memcpy(sql2, sql16, len16); 
     3392    sql2[len16 / sizeof(jchar)] = '\0'; 
     3393    (*env)->ReleaseStringChars(env, sql, sql16); 
    33883394#if HAVE_SQLITE3_PREPARE16_V2 
    3389     ret = sqlite3_prepare16_v2((sqlite3 *) h->sqlite, sql16, len16, 
     3395    ret = sqlite3_prepare16_v2((sqlite3 *) h->sqlite, sql2, len16, 
    33903396                               (sqlite3_stmt **) &svm, (const void **) &tail); 
    33913397#else 
    3392     ret = sqlite3_prepare16((sqlite3 *) h->sqlite, sql16, len16, 
     3398    ret = sqlite3_prepare16((sqlite3 *) h->sqlite, sql2, len16, 
    33933399                            (sqlite3_stmt **) &svm, (const void **) &tail); 
    33943400#endif 
    33953401    if (ret != SQLITE_OK) { 
     
    34013407    if (ret != SQLITE_OK) { 
    34023408        const char *err = sqlite3_errmsg(h->sqlite); 
    34033409 
    3404         (*env)->ReleaseStringChars(env, sql, sql16); 
     3410        free(sql2); 
    34053411        setstmterr(env, stmt, ret); 
     3412        printf("%s\n", err); 
    34063413        throwex(env, err ? err : "error in prepare"); 
    34073414        return; 
    34083415    } 
    34093416    if (!svm) { 
    3410         (*env)->ReleaseStringChars(env, sql, sql16); 
     3417        free(sql2); 
    34113418        return; 
    34123419    } 
    3413     len16 = len16 + sizeof (jchar) - ((char *) tail - (char *) sql16); 
     3420    len16 = len16 + sizeof (jchar) - ((char *) tail - (char *) sql2); 
    34143421    if (len16 < sizeof (jchar)) { 
    34153422        len16 = sizeof (jchar); 
    34163423    } 
    34173424    v = malloc(sizeof (hvm) + len16); 
    34183425    if (!v) { 
    3419         (*env)->ReleaseStringChars(env, sql, sql16); 
     3426        free(sql2); 
    34203427        sqlite3_finalize((sqlite3_stmt *) svm); 
    34213428        throwoom(env, "unable to get SQLite handle"); 
    34223429        return; 
     
    34323439    memcpy(v->tail, tail, len16); 
    34333440    len16 /= sizeof (jchar); 
    34343441    ((jchar *) v->tail)[len16 - 1] = 0; 
    3435     (*env)->ReleaseStringChars(env, sql, sql16); 
     3442    free(sql2); 
    34363443    v->hh.sqlite = 0; 
    34373444    v->hh.haveutf = h->haveutf; 
    34383445    v->hh.ver = h->ver; 
Note: See TracBrowser for help on using the browser.