QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1492|回复: 0

今天修正了graphviz的一个BUG,解决了其中文问题:)

[复制链接]
发表于 2004-8-5 21:39:16 | 显示全部楼层 |阅读模式
graphviz-1.13.20040729.1224
在我的MagicLinux上用dotty时习惯性的用鼠标中键的滚轮
轻轻的向下滚动了一下,居然就core dump了:
[root@MagicLinux lefty]# gdb lefty core.23835
......
#0  0x0805d9f7 in find (tp=0x80bd1f4, ko=0x80895f0, sk=0x0) at tbl.c:479
479             if ((kvlp = tp->lp[GETSKINDEX (tp, sk)]))
(gdb) p/x sk
$1 = 0x0

看看GETSKINDEX是什么东东:
[root@MagicLinux lefty]# grep GETSKINDEX tbl.c
#define GETSKINDEX(tp, sk) (unsigned long) *sk % tp->ln

不core dump才怪!!

patch了一下这个bug:

[root@MagicLinux lefty]# diff tbl.c tbl.c.bk
479,483d478
<       /* Add by cloud.040804*/
<       if(sk == NULL)
<               return NULL;
<       /* Add End */
<

最后把这个BUG报告给 [email protected]了,

不能显示中文问题原来是需要在dotty.lefy中硬加入中文字体影射,
然后在dot中指定fontname=Simsun即可!

顺修改了一些功能:
1. 鼠标左键点击不建立新节点,改为中键点击时建立.
2. 移动节点后鼠标左键up时重绘视图.
3. 增加快捷键v显示鸟瞰视图

还没有解决的问题有:
1. 通过左键拖戈来移动图像
2. 通过左建拖戈加shift键来实现放大和缩小


Patch结果如下:

[root@MagicLinux dotty]# diff dotty.lefty  dotty.lefty.old
44,45d43
<               'Simsun' =
<               '-misc-fixed-medium-r-normal--0-0-0-0-c-0-gbk-0';
55d52
<               'Simsun' = 'Simsun';
[root@MagicLinux dotty]# diff dotty_ui.lefty dotty_ui.lefty.old
236d235
<         'v' = "birdseye view";
281c280
<         local gt,vt;
---
>         local gt;
286d284
<             {
288,291d285
<               vt = dotty.views[data.widget];
<               gt = dotty.graphs[vt.gtid];
<               gt.drawgraph (gt, [vt.vtid = vt;]);
<             }
293,297c287,288
<         }
<
< # else if (~data.obj)
< #   gt.insertnode (gt, data.pos, null, null, null, 1);
<
---
>         } else if (~data.obj)
>             gt.insertnode (gt, data.pos, null, null, null, 1);
322,323d312
<         {
<             gt.insertnode (gt, data.pos, null, null, null, 1);
325d313
<         }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-26 08:42 , Processed in 0.074005 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表