Hallvard Breien Furuseth wrote: > Hello. Hey, long time no see! > > slap_op_time(time_t *t, int *nop) could previously be called with any > 2 arg of those types. But now it modifies nop[1], so old code other > than slap_op_time(&op->o_time, &op->o_tincr) gets a bad memory write. > > Source-code compat looks like a misfeature now. I'd rather rename and > re-prototype: slap_op_gettime(Operation* or some new time-struct*).
Sounds like good ideas overall. > == > > Another fake array: Let's replace bi_op_bind..bi_chk_controls in > BackendInfo with macros referring into a new bi_op_func[14]. Today > (&bi->bi_op_bind) is used as an array here: grep -r '(&.*_bind)' > > And apply 'contrib/slapd-tools/wrap_slap_ops -u * | patch -p0', > though that can wait a bit more - until RE24 is really surely not > going to get new releases and merge conflicts with the patch. > (Hm. The "delete newlines at EOF" cleanup doesn't belong there.) > > Related issue: slap_operation_e was the indexes to (&bi->bi_op_bind), > but now it has op_txn too corresponding to bi_op_txn with a different > prototype. 'grep -r op_last' shows code mentioning op_last which has > not been updated to match this. Unsure what to do about this. Other > than commenting the enum afterwards, anyway:-) > > == > > Any chance of wrapping struct ldapoptions' contents in some structs? > Today, if a new field is added but the corresponding NULLARG is not > updated to match, the later NULLARGs initialize the wrong fields and > can fail. As in ITS#9332 (init ldo_tls_require_san). Sure. Or whatever can be done to make sure that a missing update causes a compile-time error instead of being ignorable. > > So anyway, one struct per LDAP_blah_NULLARG. Then replace most > NULLARGs with {0}. But must add lots of macros, for the old fields. > > == > > Hallvard > -- -- Howard Chu CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/project/