pdo_oci错误计算缓冲区大小的patch

pdo_oci已经很久没人更新了,有个bug存在很久了也一直没有修复。上次遇到了这个问题,老大发我了一个patch,这次又用到了,就顺手记下来。

报错信息

column XXX data was too large for buffer and was truncated to fit it in XXX

其问题是在计算变长字符集编码长度时计算不准确,导致缓冲区大小申请出错。修改pdo_oci源码解决。

oci_statement.c  532行:

col->maxlen = data_size;

修改为:

col->maxlen = ( data_size + 1 ) * sizeof(utext);

重新编译即可

标签: php, pdo, patch, oracle

已有 3 条评论

  1. 阿托 阿托
  2. 阿托 阿托

    您好,能不能把你编译好的dll发到我邮箱,谢谢

    1. 我手上没有windows的编译环境,而且不同的php版本dll也对不上的

添加新评论