jsoncpp-src-0.5.0.tar.gz 源码错误!!!!
2024-08-31 13:50:09
近期在做毕设,使用到了JsonCpp0.5.0版本号的源码!
依照网上的安装配置教程,搭建好环境后就能够使用了!
在这里就不浪费空间去将怎样搭建开发环境了!请大家去google一下就好了!
在解析一个Json文件时。程序总是在某个地方出错!
開始还以为是TXT文件的格式不正确,还特意找了一个json文件来搞!这时发下这个json文件却执行通过!
难道真的是文件的问题!我将我的TXT文件逐渐简化,可是还是出问题,而其问题不是出在我的代码中。难道是JsonCpp的源码出现了问题!真的不敢相信!!
我将源码载入到我的project文件里来,又一次调试执行,调试期定位到问题所在!
json_reader.cpp 中
bool
Reader::decodeDouble( Token &token )
{
double value = 0;
const int bufferSize = 32;
int count;
int length = int(token.end_ - token.start_);
if ( length <= bufferSize )
{
Char buffer[bufferSize];
memcpy( buffer, token.start_, length );
buffer[length] = 0;
count = sscanf( buffer, "%lf", &value );
}
else
{
std::string buffer( token.start_, token.end_ );
count = sscanf( buffer.c_str(), "%lf", &value );
} if ( count != 1 )
return addError( "'" + std::string( token.start_, token.end_ ) + "' is not a number.", token );
currentValue() = value;
return true;
}
问题事实上非常easy,就是数组訪问越界了!
将if中的推断语句改为 length < bufferSize就好了!
測试用例通过!正确的解析了!
最新文章
- 了解HTML锚点
- Disconf
- Elasticsearch——Date Math在索引中的用法详解
- 深入理解MySQL开发性能优化.pptx
- ASP.NET MVC 5 入门教程 (3) 路由route
- 计算openlayers两点之间的距离
- C# 打印多页tif
- JavaScript 问答 - No.1
- hdu1588之经典矩阵乘法
- linux apt-get 源配置
- Python数据结构之栈的实现
- Linux基础实操六
- Linux——入门命令
- delphi图片欣赏
- 前端框架VUE
- (转)C#制作一个消息拦截器
- spring ioc 注解配置
- 【ocp新题】OCP 12c 062认证考试出现大量新题-8
- c++11 继承控制:final和override
- Vim的使用 区域选择
热门文章
- django开发微信公众平台遇到的问题记录
- js兼容性——获取当前浏览器窗口的宽高
- 封装HttpClient进行http请求与https请求
- js如何实现php的in_array()
- 【codeforces 810C】Do you want a date?
- Tomcat远程代码执行漏洞(CVE-2017-12615)修复
- Maven导入ojdbc14.jar和ojdbc6.jar
- Request的getParameter和getAttribute方法的差别
- ElasticSearch Shard——本质上是做分布式扩展,副本对于集群的稳定性有很强的影响
- 记录一下c++的一点指针所得