PCman 板


LINE

(Openfoundary.org的Issue Tracker我不会用><只好发文在这里) 前情提要:作业系统为Ubuntu 12.04.2,libXft为version 2.2.0 昨天去下载pcmanx-gtk2-1.2,上PTT时常会Segmentation fault。目前只找到一篇可使 bug重复出现的文章:http://webptt.com/cn.aspx?n=bbs/TigerBlue/M.1361860974.A.A8C.html。我 装回pcmanx-gtk2-1.1问题仍然存在。(昨天是小弟第一次上唬烂版) 节录gdb的内容如下: (gdb) bt #0 XftCharExists (dpy=0x76d880, pub=0x0, ucs4=63269) at ../../src/xftglyphs.c:836 #1 0x00000000004346ef in CFontConfig::SearchFontFor (this=0xa377a0, ucs4=63269) at cfontconfig.cpp:120 #2 0x0000000000431538 in CTermView::DrawChar (this=0x9c9e30, row=<optimized out>, col=<optimized out>) at termview.cpp:557 (...#3 CTermData::DoUpdateDisplay()到#10 main()略...) src/core/cfontconfig.cpp的SearchFontFor()内容为: XftFont* CFontConfig::SearchFontFor(FcChar32 ucs4) { Display *display = gdk_x11_get_default_xdisplay(); gint screen = gdk_x11_get_default_screen(); for (vector<CFontPack*>::iterator it = fonts.begin(); it != fonts.end(); it++) { if ((*it)->check == false) { (*it)->font = XftFontOpen(display, screen, FC_FAMILY, FcTypeString, (*it)->name, FC_SIZE, FcTypeDouble, (double) 16, FC_WEIGHT, FcTypeInteger, FC_WEIGHT_MEDIUM, FC_ANTIALIAS, FcTypeBool, FcTrue, XFT_CORE, FcTypeBool, FcFalse, NULL); (*it)->check = true; } if (XftCharExists(display, (*it)->font, ucs4) == FcTrue) { return (*it)->font; } } return NULL; } 由於XftCharExists()并没有检查第二个参数是不是合法的指标,而且XftFontOpen找不到 适合的字型时会回传NULL,因此就有机会Segfault (我参考的XftCharExists()的code: http://tinyurl.com/cq9j7xz Line 705~713) 如果先检查指标,再传给XftCharExists(),可能就可以避免Segfault,例如: // XftOpenFont returns NULL if no match found, buf XftCharExists // assumes the second parameter valid if ((*it)->font) { if (XftCharExists(display, (*it)->font, ucs4) == FcTrue) { return (*it)->font; } } 如此找不到适当字型时SearchFont()就会回传NULL 呼叫SearchFont()的CTermView::DrawChar()在return value为NULL时便采用预设的字型 画出字元(src/core/termview.cpp Line 557~562),所以这样改应该不会有不好的影响。 只是抛砖引玉,希望有更好的解决方法,也希望这个bug早日修复! -- 雨後荷花承恩露,满城春色映朝阳 大明湖畔风光好,泰岳峰高圣泽长 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.241.234
1F:推 cole945:专业推..XD 03/01 22:51
2F:推 pptpb:直接去 pcmanx-gtk2 官网开 issue 吧 03/02 10:03
3F:→ yan12125:感谢楼上,已发issue 03/02 21:09







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP