解决了一个 Linux 版飞信 GUI 的一个重要 Bug

江苏移动一直有飞信答奥运题奖话费的活动,所以我女友每天都有登录飞信答题的习惯。Libfetion 是针对飞信协议开发的第三方程序库,在此基础上有 Linux 和 Mac 版 GUI 软件(GUI 是开源的,但库不是),虽然不算好用吧,但总比没有强。前两天我将 Libfetion 从 0.2.1 升级到 0.2.2 版,忽然发现不能用了,没法在 Linux 下答飞信题,在女友面前很没面子。

于是今天晚上就找了点儿时间将源代码下载下来,加 -g 编译,调试了一下。虽然没有文档帮助,找 bug 的过程还是相当之顺利,用 gdb 跑了三遍就定位到了问题所在,把问题解决,将 patch 提交给了 Libfetion 开发组

自从 0.2.2 更新之后, libfetion 在登录后就会直接退出,我调试了一下,发现其原因在于错误的先 delete 掉 longinWin 对象。下面是 patch:

$ diff -urN fxmain.cpp new_fxmain.cpp
--- fxmain.cpp        2008-07-05 22:48:22.000000000 +0800
+++ new_fxmain.cpp        2008-07-07 20:01:58.000000000 +0800
@@ -66,7 +66,7 @@
        isLoginIn = true;
        mainWin = new FxMainWindow(0);
        loginWin->hide();
-        delete loginWin;
        mainWin->show();
+        delete loginWin;
}

之所以提这件事情就是想说明一点开源软件的优越性:由于所有人都能得到源代码,遇到问题不必非得等官方的补丁,自己动手就可以解决;由于平台或工具的原因,有时候开发者未必意识到的错误,反而可以被某一特定用户解决。在这一点上,闭源软件要差很多,这也是我喜欢开源运动的原因之一。

《解决了一个 Linux 版飞信 GUI 的一个重要 Bug》上有8条评论

  1. 助人为乐的好人哪,嚯嚯!
    不过个人觉得开源和闭源各有各的好处,根本没必要一定要为了争他们哪个更好而搞得开源和闭源你死我活的

  2. [Comment ID #270819 Will Be Quoted Here]
    这完全是一个视角问题,因为至少从现在来说,开源软件还是一个弱势群体,而且挑起事端的不一定都是开源软件社区。
    从另一个角度来讲,弱势群体如果想要受到关注,必须去挑战一下强势群体,这样才能引起更多的注意。
    总的来说,开源社区是很难把某个强大的商业软件整死的(顶多伤一下元气),他们也没有这个实力和精力;
    但是商业软件公司却可能通过律师团将某个开源计划扼杀,所以你死我活这点说法有点偏颇,因为他们实力不均等。

    不管怎样,至少从中国人的角度来讲,多一些好的开源软件,对我们是非常有好处的。
    而且从我个人来说,商业收费软件大部分我根本用不起,所以何谈支持?我只有支持开源和免费软件了。

  3. "没法在 Linux 下答飞信题,在女友面前很没面子。"
    这句话很可爱,哈哈
    支持开源。

  4. Actually, it's true.北京这些天不是连阴雨就是大太阳每次出去要么被雨淋到要么被太阳晒到,再加上北京的交通她怎么也不肯再出去玩了

  5. 晕,还以为你这阵子不更新了呢,google reader上订阅的你的博一直没反映,怎么个情况。

  6. [Comment ID #270865 Will Be Quoted Here]
    那就奇怪了啊,使用的右侧的订阅源吗?我的 Google Reader 没有问题的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注