挖井

类库大魔王的挖井日记

挖一口属于自己的井


小心缺省参数值

  昨天本来是想完成编译构建的特性的,结果先去搞工程树视图了,发现了好些工程树视图代码中隐藏的bug。
  其中最诡异的莫过于在打开一个工程文件时,读出各个xml的DOM节点,调用另一个函数处理这个DOM节点,总是发现值为nil。搞了老大半天,把代码结构也调整了不少,最后发现是该函数本是个递归函数,在递归调用时居然少写了个参数,于是Lua就主动把后面缺的参数值赋为nil了。人都差点儿崩溃了,开始抱怨Lua不稳定,其实是人不稳定啊,哈哈。这次事件让我再次觉得,缺省参数值这个特性实在是很危险,以前在C++程序中也因为这个原因引起过问题。
  在定位这个问题的过程中,还偶然发现,原来Xerces中的getElementByTagName是游走整棵树的,跟我原来的设想不一样,都是MSXML用惯了的后遗症。决定以后就只用Xerces了,无论是VC还是GCC都可以用,以后换个操作系统也可以用,现在Lua中也可以用,彻底告别Xerces,至于它保存成文件时格式不好看的问题,暂时不管它。
  Xerces的文档一直没仔细看过,昨天发现,XMLString::transcode返回的字符串,用完后,要用XMLString::release释放,原来我都没这么做!

本文地址:

https://minidump.info/blog/2010/01/e5-b0-8f-e5-bf-83-e7-bc-ba-e7-9c-81-e5-8f-82-e6-95-b0-e5-80-bc/

上一篇

修正又一处内存泄漏

  前两天偶然发现,又有内存泄漏了。昨天仍然在写Lua脚本,于是没怎么管它,今天早上起来wc时,突然觉得这内存泄漏实在是眼中钉,肉中刺,一定要解决。  首先是发现,只有在程序中打开过文件后,才会有内存泄漏,而且泄漏的数量跟打开文件的数量似乎是成正比的。于是开始查看打开文件部分的代码,发现这部分...…

CodingStudio 全文阅读
下一篇

我错了,不关iconv的事

  前面提到iconv转换编码搞得wxWidgets写成的程序在Scintilla刷新时崩溃,还以为是iconv引起的问题,于是决定使用ICU。  嗯,结果我错了,用ICU仍然有问题,有相同的问题,尽管我已经把这部分代码放到Lua中执行,对嵌入的Lua解释器,调用ICU4Lua,再调用ICU,...…

CodingStudio 全文阅读