There's a problem with the recent leave-guile-mode patch. Basically, sometimes we want to leave guile mode, and sometimes we don't.
Examples of times when we want to leave guile mode would be: g_main_loop_run () gst_bus_poll() *any function* that can potentially cause a callback to come in from another thread, because guile needs to grab some kind of shared lock when adding a thread Examples when you don't want to leave guile mode: functions that deal in SCM functions that call libguile code So we have to choose a default. I propose that by default we stay in guile mode, like we had before. Users that want threads have to deal with the pain of manually telling g-wrap to leave guile-mode for the functions. I will set up guile-gnome to leave guile mode by default, with the possibility of some kwarg to stay in. So, how to implement this? The problem is that gw_wrapset_add_function is generic, for all languages. The same with wrap-function!. The <gw-function> and GWFunctionInfo both need to know whether or not to leave guile-mode. Since a runtime seems like a normal thing for a language to have, I propose including this bit in core g-wrap. Concretely I propose adding a "flags" member tothe GWFunctionInfo and <gw-function> data structures and a "flags" argument to the wrap-function! and gw_wrapset_add_function procedures. The attached bundle implements this behavior. Thanks, Andy.
# Bazaar revision bundle v0.8 # # message: # merge from rotty # committer: Andy Wingo <[EMAIL PROTECTED]> # date: Thu 2007-01-04 22:43:09.391000032 +0100 === modified file ChangeLog --- ChangeLog +++ ChangeLog @@ -1,3 +1,33 @@ +2007-01-04 Andy Wingo <[EMAIL PROTECTED]> + + Add a flag to GWFunctionInfo to control whether or not we leave + guile/the language when calling functions. + + * guile/g-wrap/guile-runtime.c (do_ffi_call): Renamed from + ffi_call_without_guile. + (dynproc_smob_apply): Only leave guile if the LEAVE_RUNTIME + function flag is set. + + * guile/examples/Makefile.am (CLEANFILES): Fix the clean target. + + * guile/g-wrap/guile.scm (initializations-cg): + * g-wrap/rti.scm (add-function-rti-cg): Write the flags arg into + the generated C. + + * g-wrap/core-runtime.h (GWFunctionFlag): New data type. + (GW_FUNCTION_FLAG_LEAVE_RUNTIME, GW_FUNCTION_FLAGS_USER_SHIFT): + A flag supported by G-Wrap, and some padding so that users can + have flags too. + (struct _GWFunctionInfo): Add flags member. + + * g-wrap/core-runtime.c (gw_wrapset_add_function): Add flags arg. + + * g-wrap.scm (<gw-function>): Add flags slot. + (flags) New exported public accessor of flags. Flags is a string + that should evaluate to an unsigned int in C, and normally should + use the constants in core-runtime.h. + (wrap-function!): Accept a flags kwarg, defaults to "0". + 2007-01-02 Andreas Rottmann <[EMAIL PROTECTED]> * configure.ac, Makefile.am (DIST_SUBDIRS): Always include libffi === modified file g-wrap.scm // last-changed:[EMAIL PROTECTED] ... 94607f764dd63 --- g-wrap.scm +++ g-wrap.scm @@ -57,6 +57,7 @@ input-arguments output-arguments optional-arguments return-type return-typespec generic-name + flags <gw-type> needs-result-var? @@ -406,7 +407,8 @@ (arguments #:getter arguments #:init-keyword #:arguments) (generic-name #:getter generic-name #:init-keyword #:generic-name - #:init-value #f)) + #:init-value #f) + (flags #:getter flags #:init-keyword #:flags)) (define-method (write (self <gw-function>) port) (display "#<gw-function " port) @@ -728,7 +730,7 @@ (define-method (wrap-function! (wrapset <gw-wrapset>) . args) ;;(format #t "wrapping ~S\n" args) (let-keywords - args #f (name returns c-name arguments description generic-name) + args #f (name returns c-name arguments description generic-name flags) (guard (c (#t (raise-stacked c "while processing function `~S'" name) @@ -742,7 +744,8 @@ #:c-name c-name #:arguments (resolve-arguments wrapset arguments) #:description description - #:generic-name generic-name))))) + #:generic-name generic-name + #:flags (or flags "0")))))) (define-method (wrap-constant! (wrapset <gw-wrapset>) . args) (let-keywords === modified file g-wrap/core-runtime.c // last-changed:[EMAIL PROTECTED] ... 4214109-1f994607f764dd63 --- g-wrap/core-runtime.c +++ g-wrap/core-runtime.c @@ -240,7 +240,8 @@ const char **arg_types, GWTypeSpec *arg_typespecs, const char *proc_name, - const char *generic_name) + const char *generic_name, + GWFunctionFlags flags) { GWFunctionInfo *fi; ffi_type **arg_ffi = NULL; @@ -264,6 +265,7 @@ fi->generic_name = generic_name; fi->arg_types = NULL; fi->ret_type = NULL; + fi->flags = flags; /* FIXME: FFI should be able to handle optional args */ assert (!arg_types || !n_optional_args); === modified file g-wrap/core-runtime.h // last-changed:[EMAIL PROTECTED] ... 4214109-1f994607f764dd63 --- g-wrap/core-runtime.h +++ g-wrap/core-runtime.h @@ -105,6 +105,15 @@ #define GW_TYPESPEC_USER_SHIFT 8 +typedef unsigned int GWFunctionFlags; + +enum +{ + GW_FUNCTION_FLAG_LEAVE_RUNTIME = 0x01 +}; + +#define GW_FUNCTION_FLAGS_USER_SHIFT 16 + typedef void (*GWUnWrapValueFunc)(void *instance, GWLangArena arena, const GWTypeSpec *ts, @@ -151,6 +160,8 @@ ffi_cif cif; unsigned int data_area_size; /* Size needed for the dynamic-call info */ + + GWFunctionFlags flags; }; struct _GWWrapSet @@ -196,7 +207,8 @@ const char **arg_types, GWTypeSpec *arg_typespecs, const char *proc_name, - const char *generic_name); + const char *generic_name, + GWFunctionFlags flags); void gw_wrapset_register (GWWrapSet *ws); === modified file g-wrap/rti.scm // last-changed:[EMAIL PROTECTED] ... -1f994607f764dd63 --- g-wrap/rti.scm +++ g-wrap/rti.scm @@ -244,6 +244,7 @@ (if (generic-name function) (list "\"" (symbol->string (generic-name function)) "\"") "NULL") + ", " (flags function) ");\n" "}\n"))) === modified file guile/examples/Makefile.am // last-changed:[EMAIL PROTECTED] ... 070104214109-1f994607f764dd63 --- guile/examples/Makefile.am +++ guile/examples/Makefile.am @@ -13,6 +13,8 @@ EXTRA_DIST= README update-format.scm +CLEANFILES = $(wildcard gw-*) + # Wrapset generation gw-%.c gw-%.scm: %-spec.scm LD_LIBRARY_PATH=${LOCALPWD}/..:${LD_LIBRARY_PATH} \ === modified file guile/g-wrap/guile-runtime.c // last-changed:[EMAIL PROTECTED] ... 20070104214109-1f994607f764dd63 --- guile/g-wrap/guile-runtime.c +++ guile/g-wrap/guile-runtime.c @@ -578,7 +578,7 @@ typedef void* (*guile_without_func)(void*); static void* -ffi_call_without_guile (const ffi_guile_call_info *info) +do_ffi_call (const ffi_guile_call_info *info) { ffi_call (&info->fi->cif, info->fi->proc, info->rvalue, info->values); return NULL; @@ -632,7 +632,11 @@ } } - scm_without_guile ((guile_without_func)ffi_call_without_guile, &call_info); + if (fi->flags & GW_FUNCTION_FLAG_LEAVE_RUNTIME) + scm_without_guile ((guile_without_func)do_ffi_call, + &call_info); + else + do_ffi_call (&call_info); rvalue = GW_RVALUE_PTR (rvalue, fi->ret_type); fi->ret_type->wrap_value (&result, ARENA, &fi->ret_typespec, rvalue, &error); === modified file guile/g-wrap/guile.scm // last-changed:[EMAIL PROTECTED] ... 04214109-1f994607f764dd63 --- guile/g-wrap/guile.scm +++ guile/g-wrap/guile.scm @@ -511,7 +511,8 @@ (map default-value visible-args)))) (n-req-args (- n-visible-args n-optional-visible-args)) (fn-c-wrapper (slot-ref function 'wrapper-name)) - (fn-c-string (slot-ref function 'wrapper-namestr))) + (fn-c-string (slot-ref function 'wrapper-namestr)) + (flags-c-string (flags function))) (list " gw_wrapset_add_function(" (c-info-sym wrapset) ", " fn-c-wrapper ", " n-req-args ", " n-optional-visible-args ", " @@ -519,6 +520,7 @@ (if (generic-name function) (list "\"" (symbol->string (generic-name function)) "\"") "NULL") + ", " flags-c-string ");\n"))) # revision id: [EMAIL PROTECTED] # sha1: 28f7a6cf1cd19940af82e945d14f60eb7e269bf0 # inventory sha1: 53fc8d089558dceaac0b71f56451cce229fdb4cf # parent ids: # [EMAIL PROTECTED] # [EMAIL PROTECTED] # base id: [EMAIL PROTECTED] # properties: # branch-nick: mainline # message: # 2007-01-04 Andy Wingo <[EMAIL PROTECTED]> # # Add a flag to GWFunctionInfo to control whether or not we leave # guile/the language when calling functions. # # * guile/g-wrap/guile-runtime.c (do_ffi_call): Renamed from # ffi_call_without_guile. # (dynproc_smob_apply): Only leave guile if the LEAVE_RUNTIME # function flag is set. # # * guile/examples/Makefile.am (CLEANFILES): Fix the clean target. # # * guile/g-wrap/guile.scm (initializations-cg): # * g-wrap/rti.scm (add-function-rti-cg): Write the flags arg into # the generated C. # # * g-wrap/core-runtime.h (GWFunctionFlag): New data type. # (GW_FUNCTION_FLAG_LEAVE_RUNTIME, GW_FUNCTION_FLAGS_USER_SHIFT): # A flag supported by G-Wrap, and some padding so that users can # have flags too. # (struct _GWFunctionInfo): Add flags member. # # * g-wrap/core-runtime.c (gw_wrapset_add_function): Add flags arg. # # * g-wrap.scm (<gw-function>): Add flags slot. # (flags) New exported public accessor of flags. Flags is a string # that should evaluate to an unsigned int in C, and normally should # use the constants in core-runtime.h. # (wrap-function!): Accept a flags kwarg, defaults to "0". # # committer: Andy Wingo <[EMAIL PROTECTED]> # date: Thu 2007-01-04 22:41:09.979000092 +0100 === modified file ChangeLog // encoding:base64 LS0tIENoYW5nZUxvZworKysgQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMDctMDEtMDQg IEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CisKKwlBZGQgYSBmbGFnIHRvIEdXRnVuY3Rp b25JbmZvIHRvIGNvbnRyb2wgd2hldGhlciBvciBub3Qgd2UgbGVhdmUKKwlndWlsZS90aGUgbGFu Z3VhZ2Ugd2hlbiBjYWxsaW5nIGZ1bmN0aW9ucy4KKwkKKwkqIGd1aWxlL2ctd3JhcC9ndWlsZS1y dW50aW1lLmMgKGRvX2ZmaV9jYWxsKTogUmVuYW1lZCBmcm9tCisJZmZpX2NhbGxfd2l0aG91dF9n dWlsZS4gCisJKGR5bnByb2Nfc21vYl9hcHBseSk6IE9ubHkgbGVhdmUgZ3VpbGUgaWYgdGhlIExF QVZFX1JVTlRJTUUKKwlmdW5jdGlvbiBmbGFnIGlzIHNldC4KKworCSogZ3VpbGUvZXhhbXBsZXMv TWFrZWZpbGUuYW0gKENMRUFORklMRVMpOiBGaXggdGhlIGNsZWFuIHRhcmdldC4KKworCSogZ3Vp bGUvZy13cmFwL2d1aWxlLnNjbSAoaW5pdGlhbGl6YXRpb25zLWNnKTogCisJKiBnLXdyYXAvcnRp LnNjbSAoYWRkLWZ1bmN0aW9uLXJ0aS1jZyk6IFdyaXRlIHRoZSBmbGFncyBhcmcgaW50bworCXRo ZSBnZW5lcmF0ZWQgQy4KKworCSogZy13cmFwL2NvcmUtcnVudGltZS5oIChHV0Z1bmN0aW9uRmxh Zyk6IE5ldyBkYXRhIHR5cGUuCisJKEdXX0ZVTkNUSU9OX0ZMQUdfTEVBVkVfUlVOVElNRSwgR1df RlVOQ1RJT05fRkxBR1NfVVNFUl9TSElGVCk6CisJQSBmbGFnIHN1cHBvcnRlZCBieSBHLVdyYXAs IGFuZCBzb21lIHBhZGRpbmcgc28gdGhhdCB1c2VycyBjYW4KKwloYXZlIGZsYWdzIHRvby4KKwko c3RydWN0IF9HV0Z1bmN0aW9uSW5mbyk6IEFkZCBmbGFncyBtZW1iZXIuCisKKwkqIGctd3JhcC9j b3JlLXJ1bnRpbWUuYyAoZ3dfd3JhcHNldF9hZGRfZnVuY3Rpb24pOiBBZGQgZmxhZ3MgYXJnLgor CisJKiBnLXdyYXAuc2NtICg8Z3ctZnVuY3Rpb24+KTogQWRkIGZsYWdzIHNsb3QuCisJKGZsYWdz KSBOZXcgZXhwb3J0ZWQgcHVibGljIGFjY2Vzc29yIG9mIGZsYWdzLiBGbGFncyBpcyBhIHN0cmlu ZworCXRoYXQgc2hvdWxkIGV2YWx1YXRlIHRvIGFuIHVuc2lnbmVkIGludCBpbiBDLCBhbmQgbm9y bWFsbHkgc2hvdWxkCisJdXNlIHRoZSBjb25zdGFudHMgaW4gY29yZS1ydW50aW1lLmguCisJKHdy YXAtZnVuY3Rpb24hKTogQWNjZXB0IGEgZmxhZ3Mga3dhcmcsIGRlZmF1bHRzIHRvICIwIi4KKwog MjAwNi0xMi0xNyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KIAogCSogZ3VpbGUvZy13 cmFwL2d1aWxlLWNvbXBhdGliaWxpdHkuYyAoc2NtX3dpdGhvdXRfZ3VpbGUpOiAKCg== === modified file g-wrap.scm // encoding:base64 LS0tIGctd3JhcC5zY20KKysrIGctd3JhcC5zY20KQEAgLTU3LDYgKzU3LDcgQEAKICAgIGlucHV0 LWFyZ3VtZW50cyBvdXRwdXQtYXJndW1lbnRzIG9wdGlvbmFsLWFyZ3VtZW50cwogICAgcmV0dXJu LXR5cGUgcmV0dXJuLXR5cGVzcGVjCiAgICBnZW5lcmljLW5hbWUgCisgICBmbGFncwogICAgCiAg ICA8Z3ctdHlwZT4KICAgIG5lZWRzLXJlc3VsdC12YXI/CkBAIC00MDYsNyArNDA3LDggQEAKICAg KGFyZ3VtZW50cyAjOmdldHRlciBhcmd1bWVudHMgIzppbml0LWtleXdvcmQgIzphcmd1bWVudHMp CiAgIChnZW5lcmljLW5hbWUgIzpnZXR0ZXIgZ2VuZXJpYy1uYW1lCiAgICAgICAgICAgICAgICAg Izppbml0LWtleXdvcmQgIzpnZW5lcmljLW5hbWUKLSAgICAgICAgICAgICAgICAjOmluaXQtdmFs dWUgI2YpKQorICAgICAgICAgICAgICAgICM6aW5pdC12YWx1ZSAjZikKKyAgKGZsYWdzICM6Z2V0 dGVyIGZsYWdzICM6aW5pdC1rZXl3b3JkICM6ZmxhZ3MpKQogCiAoZGVmaW5lLW1ldGhvZCAod3Jp dGUgKHNlbGYgPGd3LWZ1bmN0aW9uPikgcG9ydCkKICAgKGRpc3BsYXkgIiM8Z3ctZnVuY3Rpb24g IiBwb3J0KQpAQCAtNzI4LDcgKzczMCw3IEBACiAoZGVmaW5lLW1ldGhvZCAod3JhcC1mdW5jdGlv biEgKHdyYXBzZXQgPGd3LXdyYXBzZXQ+KSAuIGFyZ3MpCiAgIDs7KGZvcm1hdCAjdCAid3JhcHBp bmcgflNcbiIgYXJncykKICAgKGxldC1rZXl3b3JkcwotICAgYXJncyAjZiAobmFtZSByZXR1cm5z IGMtbmFtZSBhcmd1bWVudHMgZGVzY3JpcHRpb24gZ2VuZXJpYy1uYW1lKQorICAgYXJncyAjZiAo bmFtZSByZXR1cm5zIGMtbmFtZSBhcmd1bWVudHMgZGVzY3JpcHRpb24gZ2VuZXJpYy1uYW1lIGZs YWdzKQogICAgKGd1YXJkCiAgICAgKGMKICAgICAgKCN0IChyYWlzZS1zdGFja2VkIGMgIndoaWxl IHByb2Nlc3NpbmcgZnVuY3Rpb24gYH5TJyIgbmFtZSkKQEAgLTc0Miw3ICs3NDQsOCBAQAogICAg ICAgICAgICAgICAgIzpjLW5hbWUgYy1uYW1lCiAgICAgICAgICAgICAgICAjOmFyZ3VtZW50cyAo cmVzb2x2ZS1hcmd1bWVudHMgd3JhcHNldCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAjOmRl c2NyaXB0aW9uIGRlc2NyaXB0aW9uCi0gICAgICAgICAgICAgICAjOmdlbmVyaWMtbmFtZSBnZW5l cmljLW5hbWUpKSkpKQorICAgICAgICAgICAgICAgIzpnZW5lcmljLW5hbWUgZ2VuZXJpYy1uYW1l CisgICAgICAgICAgICAgICAjOmZsYWdzIChvciBmbGFncyAiMCIpKSkpKSkKIAogKGRlZmluZS1t ZXRob2QgKHdyYXAtY29uc3RhbnQhICh3cmFwc2V0IDxndy13cmFwc2V0PikgLiBhcmdzKQogICAo bGV0LWtleXdvcmRzCgo= === modified file g-wrap/core-runtime.c // encoding:base64 LS0tIGctd3JhcC9jb3JlLXJ1bnRpbWUuYworKysgZy13cmFwL2NvcmUtcnVudGltZS5jCkBAIC0y NDAsNyArMjQwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqYXJn X3R5cGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdXVHlwZVNwZWMgKmFyZ190eXBlc3Bl Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHJvY19uYW1lLAotICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmdlbmVyaWNfbmFtZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpnZW5lcmljX25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgR1dGdW5jdGlvbkZsYWdzIGZsYWdzKQogewogICBHV0Z1bmN0aW9uSW5mbyAq Zmk7CiAgIGZmaV90eXBlICoqYXJnX2ZmaSA9IE5VTEw7CkBAIC0yNjQsNiArMjY1LDcgQEAKICAg ZmktPmdlbmVyaWNfbmFtZSA9IGdlbmVyaWNfbmFtZTsKICAgZmktPmFyZ190eXBlcyA9IE5VTEw7 CiAgIGZpLT5yZXRfdHlwZSA9IE5VTEw7CisgIGZpLT5mbGFncyA9IGZsYWdzOwogICAKICAgLyog RklYTUU6IEZGSSBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgb3B0aW9uYWwgYXJncyAqLwogICBh c3NlcnQgKCFhcmdfdHlwZXMgfHwgIW5fb3B0aW9uYWxfYXJncyk7Cgo= === modified file g-wrap/core-runtime.h // encoding:base64 LS0tIGctd3JhcC9jb3JlLXJ1bnRpbWUuaAorKysgZy13cmFwL2NvcmUtcnVudGltZS5oCkBAIC0x MDUsNiArMTA1LDE1IEBACiAKICNkZWZpbmUgR1dfVFlQRVNQRUNfVVNFUl9TSElGVCA4CiAKK3R5 cGVkZWYgdW5zaWduZWQgaW50IEdXRnVuY3Rpb25GbGFnczsKKworZW51bQoreworICBHV19GVU5D VElPTl9GTEFHX0xFQVZFX1JVTlRJTUUgID0gMHgwMQorfTsKKworI2RlZmluZSBHV19GVU5DVElP Tl9GTEFHU19VU0VSX1NISUZUIDE2CisKIHR5cGVkZWYgdm9pZCAoKkdXVW5XcmFwVmFsdWVGdW5j KSh2b2lkICppbnN0YW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHV0xh bmdBcmVuYSBhcmVuYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH V1R5cGVTcGVjICp0cywKQEAgLTE1MSw2ICsxNjAsOCBAQAogCiAgICAgZmZpX2NpZiBjaWY7CiAg ICAgdW5zaWduZWQgaW50IGRhdGFfYXJlYV9zaXplOyAvKiBTaXplIG5lZWRlZCBmb3IgdGhlIGR5 bmFtaWMtY2FsbCBpbmZvICovCisKKyAgICBHV0Z1bmN0aW9uRmxhZ3MgZmxhZ3M7CiB9OwogCiBz dHJ1Y3QgX0dXV3JhcFNldApAQCAtMTk2LDcgKzIwNyw4IEBACiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqYXJnX3R5cGVzLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR1dUeXBlU3BlYyAqYXJnX3R5cGVzcGVjcywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnByb2NfbmFtZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmdlbmVyaWNfbmFtZSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpnZW5lcmlj X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHV0Z1bmN0aW9uRmxh Z3MgZmxhZ3MpOwogCiB2b2lkIAkgICBnd193cmFwc2V0X3JlZ2lzdGVyIChHV1dyYXBTZXQgKndz KTsKIAoK === modified file g-wrap/rti.scm // encoding:base64 LS0tIGctd3JhcC9ydGkuc2NtCisrKyBnLXdyYXAvcnRpLnNjbQpAQCAtMjQ0LDYgKzI0NCw3IEBA CiAgICAgIChpZiAoZ2VuZXJpYy1uYW1lIGZ1bmN0aW9uKQogCSAobGlzdCAiXCIiIChzeW1ib2wt PnN0cmluZyAoZ2VuZXJpYy1uYW1lIGZ1bmN0aW9uKSkgIlwiIikKIAkgIk5VTEwiKQorICAgICAi LCAiIChmbGFncyBmdW5jdGlvbikKICAgICAgIik7XG4iCiAgICAgICJ9XG4iKSkpCiAKCg== === modified file guile/examples/Makefile.am // encoding:base64 LS0tIGd1aWxlL2V4YW1wbGVzL01ha2VmaWxlLmFtCisrKyBndWlsZS9leGFtcGxlcy9NYWtlZmls ZS5hbQpAQCAtMTMsNiArMTMsOCBAQAogCiBFWFRSQV9ESVNUPSBSRUFETUUgdXBkYXRlLWZvcm1h dC5zY20KIAorQ0xFQU5GSUxFUyA9ICQod2lsZGNhcmQgZ3ctKikKKwogIyBXcmFwc2V0IGdlbmVy YXRpb24KIGd3LSUuYyBndy0lLnNjbTogJS1zcGVjLnNjbQogCUxEX0xJQlJBUllfUEFUSD0ke0xP Q0FMUFdEfS8uLjoke0xEX0xJQlJBUllfUEFUSH0gXAoK === modified file guile/g-wrap/guile-runtime.c // encoding:base64 LS0tIGd1aWxlL2ctd3JhcC9ndWlsZS1ydW50aW1lLmMKKysrIGd1aWxlL2ctd3JhcC9ndWlsZS1y dW50aW1lLmMKQEAgLTU3OCw3ICs1NzgsNyBAQAogdHlwZWRlZiB2b2lkKiAoKmd1aWxlX3dpdGhv dXRfZnVuYykodm9pZCopOwogCiBzdGF0aWMgdm9pZCoKLWZmaV9jYWxsX3dpdGhvdXRfZ3VpbGUg KGNvbnN0IGZmaV9ndWlsZV9jYWxsX2luZm8gKmluZm8pCitkb19mZmlfY2FsbCAoY29uc3QgZmZp X2d1aWxlX2NhbGxfaW5mbyAqaW5mbykKIHsKICAgZmZpX2NhbGwgKCZpbmZvLT5maS0+Y2lmLCBp bmZvLT5maS0+cHJvYywgaW5mby0+cnZhbHVlLCBpbmZvLT52YWx1ZXMpOwogICByZXR1cm4gTlVM TDsKQEAgLTYzMiw3ICs2MzIsMTEgQEAKICAgICAgIH0KICAgfQogICAKLSAgc2NtX3dpdGhvdXRf Z3VpbGUgKChndWlsZV93aXRob3V0X2Z1bmMpZmZpX2NhbGxfd2l0aG91dF9ndWlsZSwgJmNhbGxf aW5mbyk7CisgIGlmIChmaS0+ZmxhZ3MgJiBHV19GVU5DVElPTl9GTEFHX0xFQVZFX1JVTlRJTUUp CisgICAgICBzY21fd2l0aG91dF9ndWlsZSAoKGd1aWxlX3dpdGhvdXRfZnVuYylkb19mZmlfY2Fs bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmY2FsbF9pbmZvKTsKKyAgZWxzZQorICAgICAg ZG9fZmZpX2NhbGwgKCZjYWxsX2luZm8pOwogCiAgIHJ2YWx1ZSA9IEdXX1JWQUxVRV9QVFIgKHJ2 YWx1ZSwgZmktPnJldF90eXBlKTsKICAgZmktPnJldF90eXBlLT53cmFwX3ZhbHVlICgmcmVzdWx0 LCBBUkVOQSwgJmZpLT5yZXRfdHlwZXNwZWMsIHJ2YWx1ZSwgJmVycm9yKTsKCg== === modified file guile/g-wrap/guile.scm // encoding:base64 LS0tIGd1aWxlL2ctd3JhcC9ndWlsZS5zY20KKysrIGd1aWxlL2ctd3JhcC9ndWlsZS5zY20KQEAg LTUxMSw3ICs1MTEsOCBAQAogCQkJCQkJICAobWFwIGRlZmF1bHQtdmFsdWUgdmlzaWJsZS1hcmdz KSkpKQogCSAobi1yZXEtYXJncyAoLSBuLXZpc2libGUtYXJncyBuLW9wdGlvbmFsLXZpc2libGUt YXJncykpCiAJIChmbi1jLXdyYXBwZXIgKHNsb3QtcmVmIGZ1bmN0aW9uICd3cmFwcGVyLW5hbWUp KQotCSAoZm4tYy1zdHJpbmcgIChzbG90LXJlZiBmdW5jdGlvbiAnd3JhcHBlci1uYW1lc3RyKSkp CisJIChmbi1jLXN0cmluZyAgKHNsb3QtcmVmIGZ1bmN0aW9uICd3cmFwcGVyLW5hbWVzdHIpKQor CSAoZmxhZ3MtYy1zdHJpbmcgKGZsYWdzIGZ1bmN0aW9uKSkpCiAgICAgKGxpc3QKICAgICAgIiAg IGd3X3dyYXBzZXRfYWRkX2Z1bmN0aW9uKCIgKGMtaW5mby1zeW0gd3JhcHNldCkgIiwgIgogICAg ICBmbi1jLXdyYXBwZXIgIiwgIiBuLXJlcS1hcmdzICIsICIgbi1vcHRpb25hbC12aXNpYmxlLWFy Z3MgIiwgIgpAQCAtNTE5LDYgKzUyMCw3IEBACiAgICAgIChpZiAoZ2VuZXJpYy1uYW1lIGZ1bmN0 aW9uKQogCSAobGlzdCAiXCIiIChzeW1ib2wtPnN0cmluZyAoZ2VuZXJpYy1uYW1lIGZ1bmN0aW9u KSkgIlwiIikKIAkgIk5VTEwiKQorICAgICAiLCAiIGZsYWdzLWMtc3RyaW5nCiAgICAgICIpO1xu IikpKQogCiAMCgo= # revision id: [EMAIL PROTECTED] # sha1: f24eaea3085c13d0b93239b13da4896e09fcf516 # inventory sha1: 582e2ab2f97c5287714c38df2115cb9b02b87838 # parent ids: # [EMAIL PROTECTED] # properties: # branch-nick: mainline
_______________________________________________ g-wrap-dev mailing list g-wrap-dev@nongnu.org http://lists.nongnu.org/mailman/listinfo/g-wrap-dev