История изменений
Исправление Hertz, (текущая версия) :
В принципе, пока всё неплохо идёт с напилингом биндинга для сишной либы. Пару часов назад победил ldap_modify_ext_s, которая порождала бесконечный цикл. Пока её сырцы не прочитал, не понял почему. Оказалось, что ей нужно не просто массив передавать с экземплярами структуры LDAPMod, а null-terminated array. #f передавал, который, как в документации написано, на стороне С будет рассматриваться как NULL. Нифига. NULL передаваться не хочет. Решил так.
(define-cstruct _ldapmod
([mod_op _int]
[mod_type _string]
[mod_values (_or-null _pointer)]
#;[mod_bvalues _pointer]))
(define _c-ldap-mod (_or-null _ldapmod-pointer))
Исходная версия Hertz, :
В принципе, пока всё неплохо идёт с напилингом биндинга для сишной либы. Пару часов назад победил ldap_modify_ext_s, которая порождала бесконечный цикл. Пока её сырцы не прочитал, не понял почему. Оказалось, что ей нужно не просто массив передавать со экземплярами структуры LDAPMod, а null-terminated array. #f передавал, который, как в документации написано, на стороне С будет рассматриваться как NULL. Нифига. NULL передаваться не хочет. Решил так.
(define-cstruct _ldapmod
([mod_op _int]
[mod_type _string]
[mod_values (_or-null _pointer)]
#;[mod_bvalues _pointer]))
(define _c-ldap-mod (_or-null _ldapmod-pointer))
Помог _or-null. Теперь всё нормально отрабатывает. Доволен как слон.