@@ -3210,6 +3210,7 @@ static BOOL xstr_to_number(esodbc_stmt_st *stmt, void *data_ptr,
32103210SQLRETURN c2sql_null (esodbc_rec_st * arec ,
32113211 esodbc_rec_st * irec , char * dest , size_t * len )
32123212{
3213+ assert (irec -> concise_type == ESODBC_SQL_NULL );
32133214 if (dest ) {
32143215 memcpy (dest , JSON_VAL_NULL , sizeof (JSON_VAL_NULL ) - /*\0*/ 1 );
32153216 }
@@ -4120,37 +4121,6 @@ SQLRETURN c2sql_interval(esodbc_rec_st *arec, esodbc_rec_st *irec,
41204121# undef ASSIGN_SIGNED
41214122}
41224123
4123- static inline SQLLEN get_octet_len (SQLLEN * octet_len_ptr , void * data_ptr ,
4124- BOOL wide )
4125- {
4126- SQLLEN cnt ;
4127-
4128- assert (data_ptr );
4129-
4130- if (! octet_len_ptr ) {
4131- /* "If [...] is a null pointer, the driver assumes that all input
4132- * parameter values are non-NULL and that character and binary data is
4133- * null-terminated." */
4134- cnt = wide ? wcslen ((wchar_t * )data_ptr ) : strlen ((char * )data_ptr );
4135- } else {
4136- cnt = * octet_len_ptr ;
4137- switch (cnt ) {
4138- case SQL_NTSL :
4139- cnt = wide ? wcslen ((wchar_t * )data_ptr ) :
4140- strlen ((char * )data_ptr );
4141- break ;
4142- case SQL_NULL_DATA :
4143- BUG ("converting SQL_NULL_DATA" );
4144- cnt = -1 ; /* UTF16/8 will fail */
4145- break ;
4146- default : /* get characters count from octets count */
4147- cnt /= wide ? sizeof (SQLWCHAR ) : sizeof (SQLCHAR );
4148- }
4149- }
4150-
4151- return cnt ;
4152- }
4153-
41544124static SQLRETURN c2sql_cstr2qstr (esodbc_rec_st * arec , esodbc_rec_st * irec ,
41554125 SQLULEN pos , char * dest , size_t * len )
41564126{
@@ -4163,7 +4133,7 @@ static SQLRETURN c2sql_cstr2qstr(esodbc_rec_st *arec, esodbc_rec_st *irec,
41634133 /* pointer to app's buffer */
41644134 data_ptr = deferred_address (SQL_DESC_DATA_PTR , pos , arec );
41654135
4166- cnt = get_octet_len ( octet_len_ptr , data_ptr , /*wide*/ FALSE );
4136+ cnt = octet_len_ptr ? * octet_len_ptr : strlen (( char * ) data_ptr );
41674137
41684138 if (dest ) {
41694139 * dest = '"' ;
@@ -4197,7 +4167,7 @@ static SQLRETURN c2sql_wstr2qstr(esodbc_rec_st *arec, esodbc_rec_st *irec,
41974167 /* pointer to app's buffer */
41984168 data_ptr = deferred_address (SQL_DESC_DATA_PTR , pos , arec );
41994169
4200- cnt = get_octet_len ( octet_len_ptr , data_ptr , /*wide*/ TRUE );
4170+ cnt = octet_len_ptr ? * octet_len_ptr : wcslen (( wchar_t * ) data_ptr );
42014171
42024172 if (dest ) {
42034173 * dest = '"' ;
@@ -4216,7 +4186,7 @@ static SQLRETURN c2sql_wstr2qstr(esodbc_rec_st *arec, esodbc_rec_st *irec,
42164186 octets = WCS2U8 ((wchar_t * )data_ptr , (int )cnt , dest + !!dest ,
42174187 dest ? INT_MAX : 0 );
42184188 if ((err = GetLastError ())) {
4219- ERRH (stmt , "converting to multibyte string failed: 0x%x " , err );
4189+ ERRH (stmt , "converting to multibyte string failed: %d " , err );
42204190 RET_HDIAGS (stmt , SQL_STATE_HY000 );
42214191 }
42224192 } else {
0 commit comments