mirror of
https://github.com/Z3Prover/z3
synced 2026-07-04 22:36:10 +00:00
Fix unsafe.Pointer usage in Go propagator - use uintptr_t for cgo.Handle
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
This commit is contained in:
parent
0de7af9112
commit
d5030dfe30
3 changed files with 50 additions and 47 deletions
|
|
@ -2,9 +2,10 @@ package z3
|
|||
|
||||
/*
|
||||
#include "z3.h"
|
||||
#include <stdint.h>
|
||||
|
||||
// Declarations for C helper functions defined in propagator_bridge.c
|
||||
extern void z3go_solver_propagate_init(Z3_context ctx, Z3_solver s, void* user_ctx);
|
||||
extern void z3go_solver_propagate_init(Z3_context ctx, Z3_solver s, uintptr_t user_ctx);
|
||||
extern void z3go_solver_propagate_fixed(Z3_context ctx, Z3_solver s);
|
||||
extern void z3go_solver_propagate_final(Z3_context ctx, Z3_solver s);
|
||||
extern void z3go_solver_propagate_eq(Z3_context ctx, Z3_solver s);
|
||||
|
|
@ -12,12 +13,11 @@ extern void z3go_solver_propagate_diseq(Z3_context ctx, Z3_solver s);
|
|||
extern void z3go_solver_propagate_created(Z3_context ctx, Z3_solver s);
|
||||
extern void z3go_solver_propagate_decide(Z3_context ctx, Z3_solver s);
|
||||
extern void z3go_solver_propagate_on_binding(Z3_context ctx, Z3_solver s);
|
||||
extern void z3go_solver_register_on_clause(Z3_context ctx, Z3_solver s, void* user_ctx);
|
||||
extern void z3go_solver_register_on_clause(Z3_context ctx, Z3_solver s, uintptr_t user_ctx);
|
||||
*/
|
||||
import "C"
|
||||
import (
|
||||
"runtime/cgo"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// UserPropagator implements a custom theory propagator for Z3.
|
||||
|
|
@ -99,8 +99,7 @@ func newUserPropagator(ctx *Context, solver *Solver, iface UserPropagatorCallbac
|
|||
iface: iface,
|
||||
}
|
||||
p.handle = cgo.NewHandle(p)
|
||||
voidCtx := unsafe.Pointer(uintptr(p.handle))
|
||||
C.z3go_solver_propagate_init(ctx.ptr, solver.ptr, voidCtx)
|
||||
C.z3go_solver_propagate_init(ctx.ptr, solver.ptr, C.uintptr_t(p.handle))
|
||||
return p
|
||||
}
|
||||
|
||||
|
|
@ -266,8 +265,7 @@ func (s *Solver) NewOnClause(handler OnClauseHandler) *OnClause {
|
|||
handler: handler,
|
||||
}
|
||||
oc.handle = cgo.NewHandle(oc)
|
||||
voidCtx := unsafe.Pointer(uintptr(oc.handle))
|
||||
C.z3go_solver_register_on_clause(s.ctx.ptr, s.ptr, voidCtx)
|
||||
C.z3go_solver_register_on_clause(s.ctx.ptr, s.ptr, C.uintptr_t(oc.handle))
|
||||
return oc
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue