Сбой по одной из двух причин. Либо Алхимия не находит z.l.bc
(и не удосуживается рассказать вам об этом), либо вы неправильно ловите и сообщаете свои коды ошибок.
Как я упоминал в комментариях к вопросу, я получал ошибку времени выполнения при вызове inflateInit
. В моем случае оказалось, что Алхимия не ищет $ALCHEMY_HOME/usr/local/lib
для z.l.bc
, как это должно было быть. Это было решено путем перемещения его на /usr/local/lib
. После этого ваш код вернул Z_OK
, как и ожидалось.
Я заметил, что вы закомментировали все вызовы CHECK_ERR
, что означает, что вы войдете в бесконечный цикл, если закомментируете досрочное возвращение example.c:52
, так как вы не проверяете ошибки на inflate
вызов в следующем безусловном for
блоке. Для меня inflate
возвращал Z_DATA_ERROR
, поскольку я просто передавал ему несколько байтов UTF для целей тестирования.
Говоря о тестировании, я заметил, что есть небольшой набор тестов, предоставляемый flashzlib:
Я позаимствовал этот код, переименовал main
в test_all
, закомментировал вызов на test_gzio
¹ и заменил все printf
вызовы fprintf
на stderr
вместо². Это результат:
zlib version 1.2.3 = 0x1230, compile flags = 0x2000095
uncompress(): hello, hello!
inflate(): hello, hello!
large_inflate(): OK
after inflateSync(): hello, hello!
inflate with dictionary: hello, hello!
0
Кажется, все в порядке.
Сноски:
¹ Нет доступа к файлам в Алхимии, конечно.
² stdout
отключен для меня, но stderr
появляется в моей консоли трассировки