Vala: Освободите GChecksum после операции, чтобы получить правильный хеш MD5

Я изучаю Vala, и я пытаюсь создать Gtk + Gui, который выводит хэш файла MD5. В настоящее время я использую valadoc.org для кодирования своего приложения, и я Я использую GLib.Checksum для вычисления контрольной суммы. GLib.Checksum дескриптор MD5, SHA1, SHA256 и SHA512 (находится в документации). Поэтому я использовал код из документации, чтобы вычислить хэш пути к входному файлу. Я обнаружил, что Vala не освобождает GChecksum автоматически, и я не знаю, как это сделать вручную.

Спасибо за помощь.

Это мой код Vala:

private string HashSum( string path, string hash){
    Checksum checksum = new Checksum(ChecksumType.MD5);
    FileStream stream = FileStream.open(path, "rb");
    //var stream = File.new_for_path(path).read();

   uint8 fbuf[100];
   size_t size;

   while ((size = stream.read(fbuf)) > 0){
      checksum.update(fbuf, size);
    }
   unowned string digest = checksum.get_string();
   stdout.printf("%s: %s\n", path, digest);

   return @"$hash hash: $digest";
}

person Chiheb Nexus    schedule 26.11.2015    source источник
comment
Как вы определили, что он не освобожден? В сгенерированном коде я вижу сгенерированный бесплатный звонок. Какую версию Vala вы используете?   -  person apmasell    schedule 27.11.2015
comment
Я использую Vala 0.22.1. И я понимаю это, когда сравниваю выходную сумму MD5 моего приложения и сумму md5 на моем ПК с Ubuntu. Вот как я думал, что контрольная сумма не освобождена: когда я пытаюсь сделать несколько сумм, результат меняется. И сегодня, когда я открыл свой компьютер, результат был правильным. И когда я перекомпилирую свое приложение с помощью --pkg gtk + -3.0, результат изменился! я не знаю почему на самом деле ... я полагаю, что это решенная проблема.   -  person Chiheb Nexus    schedule 27.11.2015
comment
@apmasell: Спасибо за ответ! Проблема была в моей версии valac. Я обновил его до Vala 0.30.0, и теперь вывод правильный. Спасибо еще раз.   -  person Chiheb Nexus    schedule 27.11.2015


Ответы (1)


Думаю, проблема была в моей версии Valac. Я обновил его до последнего, найденного в моих репозиториях Ubuntu: Vala 0.30.0. И теперь вывод правильный.

person Chiheb Nexus    schedule 27.11.2015