免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2192 | 回复: 3
打印 上一主题 下一主题

请教个64位下编译的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-17 22:11 |只看该作者 |倒序浏览
编译pureftp在64位的操作系统(CentOS5.2)下出错
puredb_read.c:109:警告:由于数据类型范围限制,比较结果永远为假

虽然是警告,但是确实不能用了,所以连接到mysql的认证返回都是错误。

文件中的方法如下:
(是这句(db->size = (puredb_u32_t) st.st_size) > (size_t) 0xffffffff ||出错)
int puredb_open(PureDB * const db, const char *dbfile)
{
    struct stat st;
   
    db->map = NULL;
    if ((db->fd = open(dbfile, O_RDONLY | O_BINARY)) == -1) {
        return -1;
    }
    if (fstat(db->fd, &st) < 0 ||
        (db->size = (puredb_u32_t) st.st_size) > (size_t) 0xffffffff ||
        db->size < ((size_t) (256U + 1U) * sizeof(puredb_u32_t) +
                   sizeof PUREDB_VERSION - (size_t) 1U)) {
        close(db->fd);
        
        return -2;
    }

改怎样修改呢,谢谢C版的朋友!

puredb_read.c.rar

2.27 KB, 下载次数: 15

论坛徽章:
0
2 [报告]
发表于 2008-11-17 23:33 |只看该作者
(db->size = (puredb_u32_t) st.st_size) > (size_t) 0xffffffff

如果有puredb_u64_t的话,改成puredb_64_t

论坛徽章:
0
3 [报告]
发表于 2008-11-17 23:36 |只看该作者
好像不对啊
(puredb_u32_t) st.st_size) > (size_t) 0xffffffff
如果这么些的话,就是32位下也是不对的。32下,无符号的最大整数也就是0xffffffff
这个判断也总是假的。

论坛徽章:
0
4 [报告]
发表于 2008-11-18 01:05 |只看该作者
仔细调试了一下。感觉这个警告好像没事。
我打开mysql的log,能够看到验证已经链接过去了。
而且已经执行了取密码和取用户的Uid操作,但后面sql的就都没有做了。

用passwd验证没问题,看来还是出在mysql方面了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP