-/* Generated by re2c 0.5 on Thu May 20 13:55:15 2004 */
+/* Generated by re2c 0.5 on Fri May 21 17:19:22 2004 */
#line 1 "/home/george/src/pecl/pdo/pdo_sql_parser.re"
/*
+----------------------------------------------------------------------+
int padding;
HashTable *params = stmt->bound_params;
struct pdo_bound_param_data *param;
-
/* allocate buffer for query with expanded binds, ptr is our writing pointer */
newbuffer_len = inquery_len;
/* stupid keys need to be null-terminated, even though we know their length */
crutch = s.tok[s.cur-s.tok];
s.tok[s.cur-s.tok] = '\0';
+ fprintf(stderr, "%d %s\n", s.cur-s.tok + 1, s.tok);
if((SUCCESS == zend_hash_find(params, s.tok, s.cur-s.tok + 1,(void **)¶m))
||
(SUCCESS == zend_hash_index_find(params, bindno, (void **)¶m)))
int padding;
HashTable *params = stmt->bound_params;
struct pdo_bound_param_data *param;
-
/* allocate buffer for query with expanded binds, ptr is our writing pointer */
newbuffer_len = inquery_len;
/* stupid keys need to be null-terminated, even though we know their length */
crutch = s.tok[s.cur-s.tok];
s.tok[s.cur-s.tok] = '\0';
+ fprintf(stderr, "%d %s\n", s.cur-s.tok + 1, s.tok);
if((SUCCESS == zend_hash_find(params, s.tok, s.cur-s.tok + 1,(void **)¶m))
||
(SUCCESS == zend_hash_index_find(params, bindno, (void **)¶m)))
}
if (param->name) {
+fprintf(stderr, "registering %d %s\n", param->namelen, param->name);
param->name = estrndup(param->name, param->namelen);
- zend_hash_update(hash, param->name, param->namelen+1, param, sizeof(*param), (void**)&pparam);
+ zend_hash_update(hash, param->name, param->namelen, param, sizeof(*param), (void**)&pparam);
} else {
zend_hash_index_update(hash, param->paramno, param, sizeof(*param), (void**)&pparam);
}
static int register_bound_param(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt, int is_param)
{
struct pdo_bound_param_data param = {0};
+ int param_namelen;
param.paramno = -1;
param.param_type = PDO_PARAM_STR;
if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
ZEND_NUM_ARGS() TSRMLS_CC, "sz|llz!",
- ¶m.name, ¶m.namelen, ¶m.parameter, ¶m.param_type,
+ ¶m.name, ¶m_namelen, ¶m.parameter, ¶m.param_type,
¶m.max_value_len,
¶m.driver_params)) {
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz|llz!", ¶m.paramno,
return 0;
}
}
+ /*
+ yes, this is correct. really. truly.
+ We need to count the null terminating byte as well,
+ which parse_parameters does not do.
+ */
+ param.namelen = param_namelen + 1;
if (param.paramno > 0) {
--param.paramno; /* make it zero-based internally */