Browse Source

Nuke far pointers

# Unfortunately, this does break compatibility with Windows 3.x :-)
PEAR_1_4DEV
Ard Biesheuvel 23 years ago
parent
commit
d674159601
  1. 36
      ext/interbase/interbase.c
  2. 9
      ext/interbase/php_interbase.h

36
ext/interbase/interbase.c

@ -1337,7 +1337,7 @@ static int _php_ibase_bind(XSQLDA *sqlda, zval **b_vars, BIND_BUF *buf, ibase_qu
case SQL_TEXT: /* direct to variable */
case SQL_VARYING:
convert_to_string(b_var);
var->sqldata = (void ISC_FAR *) Z_STRVAL_P(b_var);
var->sqldata = (void *) Z_STRVAL_P(b_var);
var->sqllen = Z_STRLEN_P(b_var);
var->sqltype = SQL_TEXT + (var->sqltype & 1);
break;
@ -1348,7 +1348,7 @@ static int _php_ibase_bind(XSQLDA *sqlda, zval **b_vars, BIND_BUF *buf, ibase_qu
return FAILURE;
}
buf[i].val.sval = (short) Z_LVAL_P(b_var);
var->sqldata = (void ISC_FAR *) (&buf[i].val.sval);
var->sqldata = (void *) (&buf[i].val.sval);
break;
case SQL_LONG:
if (var->sqlscale < 0) {
@ -1358,22 +1358,22 @@ static int _php_ibase_bind(XSQLDA *sqlda, zval **b_vars, BIND_BUF *buf, ibase_qu
handle it.
*/
convert_to_string(b_var);
var->sqldata = (void ISC_FAR *) Z_STRVAL_P(b_var);
var->sqldata = (void *) Z_STRVAL_P(b_var);
var->sqllen = Z_STRLEN_P(b_var);
var->sqltype = SQL_TEXT;
} else {
convert_to_long(b_var);
var->sqldata = (void ISC_FAR *) (&Z_LVAL_P(b_var));
var->sqldata = (void *) (&Z_LVAL_P(b_var));
}
break;
case SQL_FLOAT:
convert_to_double(b_var);
buf[i].val.fval = (float) Z_DVAL_P(b_var);
var->sqldata = (void ISC_FAR *) (&buf[i].val.fval);
var->sqldata = (void *) (&buf[i].val.fval);
break;
case SQL_DOUBLE: /* direct to variable */
convert_to_double(b_var);
var->sqldata = (void ISC_FAR *) (&Z_DVAL_P(b_var));
var->sqldata = (void *) (&Z_DVAL_P(b_var));
break;
#ifdef SQL_INT64
case SQL_INT64:
@ -1383,7 +1383,7 @@ static int _php_ibase_bind(XSQLDA *sqlda, zval **b_vars, BIND_BUF *buf, ibase_qu
to avoid rounding errors...
*/
convert_to_string(b_var);
var->sqldata = (void ISC_FAR *) Z_STRVAL_P(b_var);
var->sqldata = (void *) Z_STRVAL_P(b_var);
var->sqllen = Z_STRLEN_P(b_var);
var->sqltype = SQL_TEXT;
break;
@ -1415,7 +1415,7 @@ static int _php_ibase_bind(XSQLDA *sqlda, zval **b_vars, BIND_BUF *buf, ibase_qu
t.tm_year -= 1900;
t.tm_mon--;
isc_encode_date(&t, &buf[i].val.qval);
var->sqldata = (void ISC_FAR *) (&buf[i].val.qval);
var->sqldata = (void *) (&buf[i].val.qval);
}
#else
/*
@ -1426,7 +1426,7 @@ static int _php_ibase_bind(XSQLDA *sqlda, zval **b_vars, BIND_BUF *buf, ibase_qu
ask Sascha?
*/
convert_to_string(b_var);
var->sqldata = (void ISC_FAR *) Z_STRVAL_P(b_var);
var->sqldata = (void *) Z_STRVAL_P(b_var);
var->sqllen = Z_STRLEN_P(b_var);
var->sqltype = SQL_TEXT;
#endif
@ -1438,23 +1438,23 @@ static int _php_ibase_bind(XSQLDA *sqlda, zval **b_vars, BIND_BUF *buf, ibase_qu
#ifndef SQL_TIMESTAMP
strptime(Z_STRVAL_P(b_var), IBG(timestampformat), &t);
isc_encode_date(&t, &buf[i].val.qval);
var->sqldata = (void ISC_FAR *) (&buf[i].val.qval);
var->sqldata = (void *) (&buf[i].val.qval);
#else
switch (var->sqltype & ~1) {
case SQL_TIMESTAMP:
strptime(Z_STRVAL_P(b_var), IBG(timestampformat), &t);
isc_encode_timestamp(&t, &buf[i].val.tsval);
var->sqldata = (void ISC_FAR *) (&buf[i].val.tsval);
var->sqldata = (void *) (&buf[i].val.tsval);
break;
case SQL_TYPE_DATE:
strptime(Z_STRVAL_P(b_var), IBG(dateformat), &t);
isc_encode_sql_date(&t, &buf[i].val.dtval);
var->sqldata = (void ISC_FAR *) (&buf[i].val.dtval);
var->sqldata = (void *) (&buf[i].val.dtval);
break;
case SQL_TYPE_TIME:
strptime(Z_STRVAL_P(b_var), IBG(timeformat), &t);
isc_encode_sql_time(&t, &buf[i].val.tmval);
var->sqldata = (void ISC_FAR *) (&buf[i].val.tmval);
var->sqldata = (void *) (&buf[i].val.tmval);
break;
}
#endif
@ -1485,7 +1485,7 @@ static int _php_ibase_bind(XSQLDA *sqlda, zval **b_vars, BIND_BUF *buf, ibase_qu
}
buf[i].val.qval = ib_blob.bl_qd;
}
var->sqldata = (void ISC_FAR *) &buf[i].val.qval;
var->sqldata = (void *) &buf[i].val.qval;
break;
case SQL_ARRAY:
_php_ibase_module_error("Binding arrays not supported yet" TSRMLS_CC);
@ -2591,7 +2591,7 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type)
unsigned short i;
blob_handle.bl_handle = NULL;
blob_handle.bl_qd = *(ISC_QUAD ISC_FAR *) var->sqldata;
blob_handle.bl_qd = *(ISC_QUAD *) var->sqldata;
if (isc_open_blob(IB_STATUS, &ib_result->link->handle, &ib_result->trans->handle, &blob_handle.bl_handle, &blob_handle.bl_qd)) {
_php_ibase_error(TSRMLS_C);
@ -2637,13 +2637,13 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type)
}
} else { /* blob id only */
ISC_QUAD bl_qd = *(ISC_QUAD ISC_FAR *) var->sqldata;
ISC_QUAD bl_qd = *(ISC_QUAD *) var->sqldata;
ZVAL_STRINGL(&tmp,_php_ibase_quad_to_string(bl_qd), BLOB_ID_LEN, 0);
}
break;
case SQL_ARRAY: {
if (flag & PHP_IBASE_FETCH_ARRAYS) { /* array can be *huge* so only fetch if asked */
ISC_QUAD ar_qd = *(ISC_QUAD ISC_FAR *) var->sqldata;
ISC_QUAD ar_qd = *(ISC_QUAD *) var->sqldata;
ibase_array *ib_array = &ib_result->out_array[arr_cnt];
void *ar_data;
char *tmp_ptr;
@ -2664,7 +2664,7 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type)
efree(ar_data);
} else { /* blob id only */
ISC_QUAD ar_qd = *(ISC_QUAD ISC_FAR *) var->sqldata;
ISC_QUAD ar_qd = *(ISC_QUAD *) var->sqldata;
ZVAL_STRINGL(&tmp,_php_ibase_quad_to_string(ar_qd), BLOB_ID_LEN, 0);
}
}

9
ext/interbase/php_interbase.h

@ -132,7 +132,7 @@ typedef struct {
ISC_ARRAY_DESC ar_desc;
int el_type, /* sqltype kinda SQL_TEXT, ...*/
el_size; /* element size in bytes */
ISC_LONG ISC_FAR ar_size; /* all array size in bytes */
ISC_LONG ar_size; /* all array size in bytes */
} ibase_array;
typedef struct {
@ -146,10 +146,9 @@ typedef struct {
ibase_trans *trans;
isc_stmt_handle stmt;
unsigned short type;
unsigned char has_more_rows, statement_type;
XSQLDA *out_sqlda;
ibase_array *out_array;
unsigned char has_more_rows;
char statement_type;
} ibase_result;
typedef struct {
@ -163,12 +162,12 @@ typedef struct {
unsigned short dialect;
char statement_type;
char *query;
int trans_res_id;
long trans_res_id;
} ibase_query;
typedef struct {
ibase_db_link *link;
int link_res_id;
long link_res_id;
ISC_LONG event_id;
unsigned short event_count;
char **events;

Loading…
Cancel
Save