From: Hoehle, Joerg-C. <Joe...@t-...> - 2004-12-17 14:52:23
|
Hi, >it would be nice if you could look at this more closely. >(e.g., by installing pari on your machine and building the pari = module) I have 0 time for this these days. When I'll get time (next year), I'll do these of my short-term TODO o defpackage documentation precisions o postgres sql module patch o FFI MEM-READ/WRITE add-ons o add 64bit FFI testcases >>>when "next" is (c-ptr-null entree) I get segfault whenever I call >> What's hefty? 1 million elements? >maybe more. Then (c-ptr next) is certainly bad, if you're not interested in the = whole thing. (c-pointer entree) looks like the best match. However, given non corrupt data structures, creating a list of a = million elements should be handled by the code, or we could learn = something about some weakness somewhere (testing with huge data is = always a good thing to do). >charset:iso-8859-1 :INPUT-ERROR-ACTION :ignore)) >(pari::is_entry "norm") >#S(PARI::entree :NAME "norm" :VALENCE 257 :VALUE=20 >#<FOREIGN-ADDRESS #x00D22FB0> > :MENU 2 :NEXT #<FOREIGN-ADDRESS #x00FAFABB> :HELP "`A=C2=BAA=C2=BA" > :ARGS #<FOREIGN-ADDRESS #x00FBE381>) >(setq *foreign-encoding* (make-encoding :charset charset:ascii=20 >:INPUT-ERROR-ACTION :ignore)) >(pari::is_entry "norm") >#S(PARI::entree :NAME "norm" :VALENCE 257 :VALUE=20 >#<FOREIGN-ADDRESS #x00D22FB0> > :MENU 2 :NEXT #<FOREIGN-ADDRESS #x00FAFABB> :HELP "`" > :ARGS #<FOREIGN-ADDRESS #x00FBE381>) So is_entry :return-type (c-ptr entree) yields these strange help = strings, while your hack_doc() accessor yields proper ASCII?!? (c-lines "char* hack_doc (char* s) { entree *e =3D is_entry(s); return = e=3D=3DNULL?NULL:e->help; }~%") That's looks like a mystery. BTW, what's the output of (hack_doc "norm")? Do any of the c-pointers look like they point to stack locations = instead of heap? Regards, J=C3=B6rg H=C3=B6hle |