diff --git a/src/modules/Oracle/oracle.c b/src/modules/Oracle/oracle.c index 3da3b97ad7da5a25089e68317bb509075e1d38bc..dd0aa6bff1b7e088fcb0ce19cfbe358b83bfafc2 100644 --- a/src/modules/Oracle/oracle.c +++ b/src/modules/Oracle/oracle.c @@ -776,7 +776,7 @@ static void ora_error_handler(OCIError *err, sword rc, char *func) #ifdef OCI_UTF16ID for (i = 0; msgbuf[i] && msgbuf[i+1]; i+= 2) ; - push_string(make_binary_string(msgbuf, i)); + push_string(make_shared_binary_string((char *)msgbuf, i)); push_int(2); f_unicode_to_string(2); #else @@ -2227,12 +2227,12 @@ static void f_big_typed_query_create(INT32 args) sword len, fty; int mode=OCI_DATA_AT_EXEC; long rlen=4000; - bind.bindnum++; #ifdef OCI_UTF16ID int pushed_string = 0; - if(k->ind.type == T_STRING) { + bind.bindnum++; + if(TYPEOF(k->ind) == T_STRING) { push_svalue(&k->ind); push_int(2); f_string_to_unicode(2); @@ -2242,6 +2242,7 @@ static void f_big_typed_query_create(INT32 args) else assign_svalue_no_free(& bind.bind[bind.bindnum].ind, & k->ind ); #else + bind.bindnum++; assign_svalue_no_free(& bind.bind[bind.bindnum].ind, & k->ind); #endif bind.bind[bind.bindnum].indicator=0; @@ -2522,7 +2523,7 @@ static void dblob_read(INT32 args) { sword ret; ub4 loblen = ~0; - char *bufp; + char *bufp = NULL; char *errfunc = NULL; ub4 amtp = 0; int is_clob = THIS_DBLOB->is_clob; @@ -2551,7 +2552,7 @@ static void dblob_read(INT32 args) } #endif /* FIXME: Use begin_shared_string() + end_and_resize_shared_string(). */ - if(bufp = malloc(loblen)) { + if((bufp = malloc(loblen))) { if((ret = OCILobRead(dbcon->context, dbcon->error_handle, THIS_DBLOB->lob, @@ -3020,7 +3021,7 @@ PIKE_MODULE_INIT call_c_initializers(Pike_sp[-1].u.object); add_object_constant("NULLdate",nulldate_object=clone_object(NULL_program,1),0); #ifdef OCI_UTF16ID - add_integer_constant("UNICODE_SUPPORTED", 1); + add_integer_constant("UNICODE_SUPPORTED", 1, 0); #endif }