vala编译因vala_ccode_array_module_real_get_array_length_cvalue而失败:断言失败

时间:2014-08-19 17:29:18

标签: arrays assertions vala

我正致力于开发一个与Pandora接口的库。我将我的河豚代码从python库中删除,但是我在编译它时遇到了麻烦。 Vala在尝试生成C源文件之前报告没有错误。这是我得到的错误:

nathan@nathan-laptop:~/projects/libpanda$ valac --thread lib/crypto.vala -C -v
Loaded package `/usr/share/vala-0.26/vapi/glib-2.0.vapi'
Loaded package `/usr/share/vala-0.26/vapi/gobject-2.0.vapi'
lib/crypto.vala:192.42-192.60: warning: chained relational expressions are experimental
    public Blowfish(string key) requires(8 < key.length < 56){
                                         ^^^^^^^^^^^^^^^^^^^
**
ERROR:valaccodearraymodule.c:1105:vala_ccode_array_module_real_get_array_length_cvalue: assertion failed: (size != null && size.size >= dim)
Aborted (core dumped)

您可以在我的git存储库here中找到源代码。我不确定这是否是vala本身或我的代码的错误。我觉得它与多维数组有关,因为它是在昨天编写的,当时sbox是单维数组。

编辑:看起来这是vala本身的一个问题。您似乎无法将const多维数组的值分配给另一个变量:

public class TestClass : GLib.Object{
    public static const int[,] ff = {{1,2},{3,4}};

    public int[,] asdf;

    public TestClass(){
        asdf = TestClass.ff;
    }

    public static int main(string[] args){
        var t = new TestClass();
        return 0;
    }
}

1 个答案:

答案 0 :(得分:0)

如上面的编辑所述,您似乎无法将const多维数组的值赋给另一个变量:

public class TestClass : GLib.Object{
    public static const int[,] ff = {{1,2},{3,4}};

    public int[,] asdf;

    public TestClass(){
        asdf = TestClass.ff;
    }

    public static int main(string[] args){
        var t = new TestClass();
        return 0;
    }
}

我已向vala团队here

提交了错误