LINUX.ORG.RU

История изменений

Исправление 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. Теперь всё нормально отрабатывает. Доволен как слон.

Исходная версия 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. Теперь всё нормально отрабатывает. Доволен как слон.