GNOME Bugzilla – Bug 751598
Stop 'handle-local-options' propagation when callback reports an error
Last modified: 2015-09-09 15:31:34 UTC
'handle-local-options' callbacks can return a < 0 value if they want to stop commandline processing because an error happened, but this is currently not working as expected because of an inverted check. This commit fixes that, and another one fixes small typos in 'handle-local-options' API documentation.
Created attachment 306219 [details] [review] gapplication: Stop handle-local-options emission on errors A signal accumulator can return TRUE to continue signal emission, and FALSE to stop signal emission. handle-local-options callbacks can return « return a non-negative option if you have handled your options and want to exit the process ». Currently, g_application_handle_local_options_accumulator (the accumulator for the handle-local-options signal) returns TRUE on non-negative return value (ie continue signal emission), and returns FALSE on negative return values (ie when the default option processing should continue). This return value seems backward as on >= 0 values, subsequent handle-local-options callbacks could overwrite the 'exit request' from the handler, while on < 0 values, the handle-local-options processing could end up early if several callbacks are listening for this signal. In particular, the default handler for this signal (g_application_real_handle_local_options) always returns -1 and will overwrite >= 0 return values from other handlers. This commit inverts the check so that signal emission stops early when one of the handle-local-options callbacks indicates it wants processing to stop and the process to exit.
Created attachment 306220 [details] [review] gapplication: Fix typos in handle-local-options API doc The @options parameter was missing an 's', and the name of g_application_command_line_get_options_dict() was not correct.
Review of attachment 306220 [details] [review]: sure
Review of attachment 306219 [details] [review]: This looks right to me. It would be really nice to have test cases for this.
Attachment 306219 [details] pushed as 243d740 - gapplication: Stop handle-local-options emission on errors Attachment 306220 [details] pushed as 2551685 - gapplication: Fix typos in handle-local-options API doc
*** Bug 750796 has been marked as a duplicate of this bug. ***