gpsd-2.95的bug(gpsd.php json_decode error)
gpsd自带一个php程序,只要有php和php-gd就可以生成这样的界面:http://www.rjsystems.nl/gpsd/,可惜当我使用2.95版本的时候,却遇到了错误,按照INSTALL的方法把gpsd.php复制到web目录下,却发现json_decode error。
开始以为是php-json的问题,同事写了个简单的测试脚本,一切正常,最后观察返回的json数据,发现最后多了“]}”字符导致的。
在gpsd-2.95版本出现的bug,别的版本是否存在没有去研究过。
diff -u gpsd.c_old gpsd.c
--- gpsd.c_old 2010-08-29 00:57:24.000000000 +0800
+++ gpsd.c 2010-08-29 00:57:39.000000000 +0800
@@ -1185,7 +1185,7 @@
}
if (reply[strlen(reply) - 1] == ',')
reply[strlen(reply) - 1] = '\0'; /* trim trailing comma */
- (void)strlcat(reply, "]}]}\r\n", replylen);
+ (void)strlcat(reply, "]}\r\n", replylen);
} else if (strncmp(buf, "VERSION;", 8) == 0) {
buf += 8;
json_version_dump(reply, replylen);