Vala int.parse崩溃

时间:2013-12-26 00:34:31

标签: vala

我想构建一个简单的工具来检查SVN版本号的更改(=某人已提交),但我遇到了一个非常奇怪的问题。 当我编译并运行我的代码时,将打印以下第一条消息,而下一条消息不会:

while (true) {
    var msg = new Soup.Message("GET", this.repo.URL);
    session.send_message(msg);
    MatchInfo matchInfo;
    pattern.match((string)msg.response_body.data, 0, out matchInfo);
    var revisionString = matchInfo.fetch_named("revision");
    stdout.printf("Current Revision: [%s]\n", revisionString);
    var currentRevision = int.parse("383");
    stdout.printf("Current Revision parsed %d", currentRevision);
    Thread.usleep(150000000);
}

我插入了硬编码字符串"383"仅用于测试,但仍然失败。 我也看不出printf的任何问题,也没有编译器错误 如果它有用,我可以发布更多代码。

1 个答案:

答案 0 :(得分:1)

int.parse只需致电atoi。您可以通过查看生成的C来验证这一点。

atoi不是线程安全的,我假设你因为Thread.usleep而在多个线程中运行它。

改为使用int64.try_parse,它基于strtoll

另外,尝试一个不涉及this.repo.LastRevision的更小的测试用例。