jsoncpp-src-0.5.0.tar.gz 源码错误!!!!

近期在做毕设,使用到了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就好了!

測试用例通过!正确的解析了!

时间: 2024-08-28 05:55:05

jsoncpp-src-0.5.0.tar.gz 源码错误!!!!的相关文章

实验:将inotify-tools-3.14.tar.gz源码包做成rpm包

实验步骤:1首先将inotify-tools-3.14.tar.gz下载2 yum -y install rpm-build //安装将源码包变成RPM包的工具3 rpmbuild -ba xx.spec //动创建rpmbuild目录(也可以手动创建,但是比较麻烦)4cp /root/inotify-tools-3.14.tar.gz /root/rpmbuild/SOURCES/ //将源码包拷贝到存放源码包的位置5 vim /root/rpmbuild/SPECS/inotify-tool

linux通过tar.gz源码包安装mysql

mysql版本:5.6 [http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.22.tar.gz] 官方参考:http://dev.mysql.com/doc/refman/5.6/en/installing-source-distribution.html 安装要求: 这里提到的安装要求: http://dev.mysql.com/doc/refman/5.6/en/source-installation.html 需要工具:CMake  ht

kafka 0.8.1 新producer 源码简单分析

1 背景 最近由于项目需要,需要使用kafka的producer.但是对于c++,kafka官方并没有很好的支持. 在kafka官网上可以找到0.8.x的客户端.可以使用的客户端有C版本客户端,此客户端虽然目前看来还较为活跃,但是代码问题还是较多的,而且对于c++的支持并不是很好. 还有c++版本,虽然该客户端是按照c++的思路设计,但是最近更新时间为2013年12月19日,已经很久没有更新了. 从官方了解到,kafka作者对于现有的producer和consumer的设计是不太满意的.他们打算

从零开始编写自己的C#框架(6)——SubSonic3.0插件介绍(附源码)

原文:从零开始编写自己的C#框架(6)--SubSonic3.0插件介绍(附源码) 前面几章主要是概念性的东西为主,向初学者们介绍项目开始前的一些知识与内容,从本章开始将会进入实操阶段,希望跟着本系统学习的朋友认真按说明做好每一步操作(对于代码最好是直接照着文档内容在你的IDE中打一次出来,而不是使用复制粘贴),这样对你理解后面的章节会有较好的帮助,如果你对我这种书写方式有什么建议或支持,也希望在评论中留言,谢谢你的支持. SubSonic3.0简介 SubSonic是Rob Conery用c#

yaffs2 源码错误 too few arguments to function &#39;yaffs_flush_file&#39; 2014.10.11

来自:http://blog.csdn.net/cinmyheart/article/details/38747505 yaffs2 源码错误 错误: 2014-08-06 Charles Mannin 版本的 yaffs 有误! yaffs_flush_file的定义: source file :yaffs_guts.c [cpp] view plaincopyprint? int yaffs_flush_file(struct yaffs_obj *in, int update_time,

用idea编译Spring源码错误问题记录

相关参考网站: 1.spring源码导入出错 CoroutinesUtils报错 2.spring源码构建时缺失spring-cglib-repack和spring-objenesis-repack的正确处理姿势 3.IDEA导入Spring5.x 编译流程 解决编译符号报错 第二篇 最近在阅读<Spring源码深度解析(第2版)>-郝佳 这本书,第一章就是源码环境搭建,从github上把spring拉下来进行编译,除了书中遇到的问题外,还遇到了其他的问题,这里做个记录. idea版本: sp

CentOS 7.0 安装jdk-7u79-linux-x64.tar.gz 新手推荐

初学linux 路上遇过各种坑 把正确安装JDK分享一下 1. 先准备好JDK 安装包 我下载的是jdk-7u79-linux-x64.tar.gz 2. 在/usr/local下创建个java的文件夹  mkdir /usr/local/java 3. 在你的目录中解压文件并且移动到java目录下  tar -zxvf jdk-7u79-linux-x64.tar.gz  mv jdk1.7.0_79 /usr/local/java 4. 进入etc目录下找到profile文件进行编辑    

ASP.NET Aries 2.0 发布(原来的源码SVN已关闭,开源源码已迁移到GitHub)

主要更新: 1:增加子目录部署支持. 2:增加Taurus.MVC支持. 3:优化及Bug修复. 1:增加子目录部署支持: 其实在重写Aries框架的时候,我是去掉了目录部署功能的,主要是为了加快Aries开发的速度. 不过最新有用户反馈,需要部署在子目录下,所以就顺势把子目录部署这块功能给增加上了. 2:增加Taurus.MVC支持: Aries  2.0的目录结构是这样的:原来的Aries.Logic下的Handler变更到Aries.Controllers下,其它变化不大. 在我整个设计的

hbase(0.94) get、scan源码分析

简介 本文是需要用到hbase timestamp性质时研究源码所写.内容有一定侧重.且个人理解不算深入,如有错误请不吝指出. 如何看源码 hbase依赖很重,没有独立的client包.所以目前如果在maven中指定如下: <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase</artifactId> <version>0.94-adh3u9.9</