The following C code (trimmed) works fine: xmmsc_connection_t *connection; xmmsc_result_t *result;
unsigned int id; result = xmmsc_playback_current_id (connection); xmmsc_result_wait (result); if (!xmmsc_result_get_uint (result, &id)) { fprintf (stderr, "xmmsc_playback_current_id didn't" "return uint as expected\n"); } printf ("Currently playing id is %d\n", id); The following Chicken does not: (let-location ([ret unsigned-int 275]) (let* ( [res ($ c-pointer xmmsc_broadcast_playback_current_id (c-pointer conn))] [null ($ void xmmsc_result_wait (pointer res))] [boring-ret ($ int xmmsc_result_get_uint (pointer res) (location ret))]) (display (conc "Currently playing test : " boring-ret ", " ret "\n")))) The value in "ret" is always whatever value I initialize it to, like it's not getting touched at all. I don't, at all, understand the explanations for let-location, location, or pointer (there being not much explanation for any of them), so I'm sure I'm doing something wrong. -Robin _______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/chicken-users