From e11c537bbedb5834111da5f789632508fb565f8b Mon Sep 17 00:00:00 2001 From: John Ralls Date: Fri, 3 Dec 2010 23:24:34 +0000 Subject: [PATCH] Bug #635859: Strip all trailing '/'es from kvp_slot paths when loading. This changes round-tripping slightly (because the resulting slot key won't have the trailing slash when it's re-saved as xml). It may also change the behavior of the facility using the slot, because the key is changed. So far, the only known instances which trip this bug are import-map-bayes, because descriptions may have '/'es in them (and why shouldn't they). Unfortunately, fixing this right (so that key values can have embedded '/''es and be saved/retrieved from sql databases will require changing the slot architecture in ways that impact the engine. Since we don't have adequate unit tests to be confident of not introducing a regression, I'm applying this instead. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@19904 57a11ea4-9604-0410-9ed3-97b8803252fd --- po/POTFILES.in | 308 +++++++++++++++--------------- src/backend/dbi/gnc-backend-dbi.c | 5 +- src/backend/sql/gnc-slots-sql.c | 3 +- src/bin/gnucash-bin.c | 8 +- src/gnome-utils/gnc-gnome-utils.c | 2 +- 5 files changed, 166 insertions(+), 160 deletions(-) diff --git a/po/POTFILES.in b/po/POTFILES.in index 8ed4e06a0a..8efe64d211 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -2,25 +2,25 @@ # This file was generated by ../make-gnucash-potfiles. src/app-utils/file-utils.c src/app-utils/gfec.c -src/app-utils/gnc-accounting-period.c src/app-utils/gnc-account-merge.c +src/app-utils/gnc-accounting-period.c src/app-utils/gnc-component-manager.c -src/app-utils/gnc-druid.c src/app-utils/gnc-druid-cb.c -src/app-utils/gnc-druid-provider.c -src/app-utils/gnc-druid-provider-desc.c src/app-utils/gnc-druid-provider-desc-edge.c src/app-utils/gnc-druid-provider-desc-file.c src/app-utils/gnc-druid-provider-desc-multifile.c +src/app-utils/gnc-druid-provider-desc.c src/app-utils/gnc-druid-provider-file-cb.c +src/app-utils/gnc-druid-provider.c +src/app-utils/gnc-druid.c src/app-utils/gnc-euro.c src/app-utils/gnc-exp-parser.c src/app-utils/gnc-gettext-util.c -src/app-utils/gnc-helpers.c src/app-utils/gnc-help-utils.c -src/app-utils/gncmod-app-utils.c +src/app-utils/gnc-helpers.c src/app-utils/gnc-sx-instance-model.c src/app-utils/gnc-ui-util.c +src/app-utils/gncmod-app-utils.c src/app-utils/guile-util.c src/app-utils/option-util.c src/backend/dbi/gnc-backend-dbi.c @@ -74,12 +74,12 @@ src/backend/xml/io-gncxml-gen.c src/backend/xml/io-gncxml-v1.c src/backend/xml/io-gncxml-v2.c src/backend/xml/io-utils.c -src/backend/xml/sixtp.c src/backend/xml/sixtp-dom-generators.c src/backend/xml/sixtp-dom-parsers.c src/backend/xml/sixtp-stack.c src/backend/xml/sixtp-to-dom-parser.c src/backend/xml/sixtp-utils.c +src/backend/xml/sixtp.c src/bin/gnucash-bin.c src/business/business-core/gncmod-business-core.c src/business/business-gnome/business-gnome-utils.c @@ -106,9 +106,9 @@ src/business/business-gnome/glade/job.glade src/business/business-gnome/glade/order.glade src/business/business-gnome/glade/payment.glade src/business/business-gnome/glade/vendor.glade -src/business/business-gnome/gncmod-business-gnome.c src/business/business-gnome/gnc-plugin-business.c src/business/business-gnome/gnc-plugin-page-invoice.c +src/business/business-gnome/gncmod-business-gnome.c src/business/business-gnome/schemas/apps_gnucash_dialog_business_common.schemas.in src/business/business-gnome/search-owner.c src/business/business-ledger/gncEntryLedger.c @@ -125,9 +125,9 @@ src/business/dialog-tax-table/tax-tables.glade src/calculation/amort_opt.c src/calculation/amort_prt.c src/calculation/expression_parser.c -src/calculation/fin.c src/calculation/fin-interactive.c src/calculation/fin-main.c +src/calculation/fin.c src/calculation/gncmod-calculation.c src/calculation/numeric_ops.c src/core-utils/binreloc.c @@ -142,49 +142,154 @@ src/core-utils/gnc-path.c src/core-utils/gnc-uri-utils.c src/doc/doxygen_main_page.c src/engine/Account.c +src/engine/Period.c +src/engine/Query.c +src/engine/Recurrence.c +src/engine/SX-book.c +src/engine/SX-ttinfo.c +src/engine/SchedXaction.c +src/engine/Scrub.c +src/engine/Scrub2.c +src/engine/Scrub3.c +src/engine/Split.c +src/engine/TransLog.c +src/engine/Transaction.c src/engine/cap-gains.c src/engine/cashobjects.c src/engine/engine-helpers.c src/engine/glib-helpers.c -src/engine/gncAddress.c src/engine/gnc-associate-account.c -src/engine/gncBillTerm.c src/engine/gnc-budget.c +src/engine/gnc-commodity.c +src/engine/gnc-engine.c +src/engine/gnc-hooks.c +src/engine/gnc-lot.c +src/engine/gnc-pricedb.c +src/engine/gnc-session-scm.c +src/engine/gnc-session.c +src/engine/gncAddress.c +src/engine/gncBillTerm.c src/engine/gncBusGuile.c src/engine/gncBusiness.c -src/engine/gnc-commodity.c src/engine/gncCustomer.c src/engine/gncEmployee.c -src/engine/gnc-engine.c src/engine/gncEntry.c -src/engine/gnc-hooks.c src/engine/gncIDSearch.c src/engine/gncInvoice.c src/engine/gncJob.c -src/engine/gnc-lot.c -src/engine/gncmod-engine.c src/engine/gncOrder.c src/engine/gncOwner.c -src/engine/gnc-pricedb.c -src/engine/gnc-session.c -src/engine/gnc-session-scm.c src/engine/gncTaxTable.c src/engine/gncVendor.c +src/engine/gncmod-engine.c src/engine/kvp-scm.c -src/engine/Period.c src/engine/policy.c -src/engine/Query.c -src/engine/Recurrence.c -src/engine/SchedXaction.c -src/engine/Scrub2.c -src/engine/Scrub3.c -src/engine/Scrub.c -src/engine/Split.c -src/engine/SX-book.c -src/engine/SX-ttinfo.c -src/engine/Transaction.c -src/engine/TransLog.c src/gnc-module/gnc-module.c +src/gnome-search/dialog-search.c +src/gnome-search/gnc-general-search.c +src/gnome-search/gncmod-gnome-search.c +src/gnome-search/search-account.c +src/gnome-search/search-boolean.c +src/gnome-search/search-core-type.c +src/gnome-search/search-core-utils.c +src/gnome-search/search-date.c +src/gnome-search/search-double.c +src/gnome-search/search-int64.c +src/gnome-search/search-numeric.c +src/gnome-search/search-reconciled.c +src/gnome-search/search-string.c +src/gnome-search/search.glade +src/gnome-utils/QuickFill.c +src/gnome-utils/account-quickfill.c +src/gnome-utils/cursors.c +src/gnome-utils/dialog-account.c +src/gnome-utils/dialog-book-close.c +src/gnome-utils/dialog-commodity.c +src/gnome-utils/dialog-file-access.c +src/gnome-utils/dialog-object-references.c +src/gnome-utils/dialog-options.c +src/gnome-utils/dialog-preferences.c +src/gnome-utils/dialog-query-list.c +src/gnome-utils/dialog-reset-warnings.c +src/gnome-utils/dialog-totd.c +src/gnome-utils/dialog-transfer.c +src/gnome-utils/dialog-userpass.c +src/gnome-utils/dialog-utils.c +src/gnome-utils/druid-gconf-setup.c +src/gnome-utils/druid-gnc-xml-import.c +src/gnome-utils/druid-utils.c +src/gnome-utils/glade/commodity.glade +src/gnome-utils/glade/dialog-book-close.glade +src/gnome-utils/glade/dialog-file-access.glade +src/gnome-utils/glade/dialog-object-references.glade +src/gnome-utils/glade/dialog-query-list.glade +src/gnome-utils/glade/dialog-reset-warnings.glade +src/gnome-utils/glade/druid-gconf-setup.glade +src/gnome-utils/glade/druid-gnc-xml-import.glade +src/gnome-utils/glade/druid-provider-multifile.glade +src/gnome-utils/glade/exchange-dialog.glade +src/gnome-utils/glade/gnc-date-format.glade +src/gnome-utils/glade/gnc-gui-query.glade +src/gnome-utils/glade/preferences.glade +src/gnome-utils/glade/totd.glade +src/gnome-utils/glade/transfer.glade +src/gnome-utils/gnc-account-sel.c +src/gnome-utils/gnc-amount-edit.c +src/gnome-utils/gnc-autosave.c +src/gnome-utils/gnc-commodity-edit.c +src/gnome-utils/gnc-currency-edit.c +src/gnome-utils/gnc-date-delta.c +src/gnome-utils/gnc-date-edit.c +src/gnome-utils/gnc-date-format.c +src/gnome-utils/gnc-dense-cal-model.c +src/gnome-utils/gnc-dense-cal-store.c +src/gnome-utils/gnc-dense-cal.c +src/gnome-utils/gnc-dialog.c +src/gnome-utils/gnc-druid-gnome.c +src/gnome-utils/gnc-druid-provider-edge-gnome.c +src/gnome-utils/gnc-druid-provider-file-gnome.c +src/gnome-utils/gnc-druid-provider-multifile-gnome.c +src/gnome-utils/gnc-embedded-window.c +src/gnome-utils/gnc-file.c +src/gnome-utils/gnc-frequency.c +src/gnome-utils/gnc-general-select.c +src/gnome-utils/gnc-gnome-utils.c +src/gnome-utils/gnc-gobject-utils.c +src/gnome-utils/gnc-gtk-utils.c +src/gnome-utils/gnc-gui-query.c +src/gnome-utils/gnc-icons.c +src/gnome-utils/gnc-keyring.c +src/gnome-utils/gnc-main-window.c +src/gnome-utils/gnc-menu-extensions.c +src/gnome-utils/gnc-period-select.c +src/gnome-utils/gnc-plugin-file-history.c +src/gnome-utils/gnc-plugin-manager.c +src/gnome-utils/gnc-plugin-menu-additions.c +src/gnome-utils/gnc-plugin-page.c +src/gnome-utils/gnc-plugin.c +src/gnome-utils/gnc-query-list.c +src/gnome-utils/gnc-recurrence.c +src/gnome-utils/gnc-splash.c +src/gnome-utils/gnc-sx-instance-dense-cal-adapter.c +src/gnome-utils/gnc-sx-list-tree-model-adapter.c +src/gnome-utils/gnc-tree-model-account-types.c +src/gnome-utils/gnc-tree-model-account.c +src/gnome-utils/gnc-tree-model-budget.c +src/gnome-utils/gnc-tree-model-commodity.c +src/gnome-utils/gnc-tree-model-price.c +src/gnome-utils/gnc-tree-model.c +src/gnome-utils/gnc-tree-view-account.c +src/gnome-utils/gnc-tree-view-commodity.c +src/gnome-utils/gnc-tree-view-price.c +src/gnome-utils/gnc-tree-view-sx-list.c +src/gnome-utils/gnc-tree-view.c +src/gnome-utils/gnc-window.c +src/gnome-utils/gncmod-gnome-utils.c +src/gnome-utils/misc-gnome-utils.c +src/gnome-utils/print-session.c +src/gnome-utils/schemas/apps_gnucash_history.schemas.in +src/gnome-utils/search-param.c +src/gnome-utils/window-main-summarybar.c src/gnome/dialog-commodities.c src/gnome/dialog-fincalc.c src/gnome/dialog-find-transactions.c @@ -240,122 +345,17 @@ src/gnome/schemas/apps_gnucash_general.schemas.in src/gnome/schemas/apps_gnucash_warnings.schemas.in src/gnome/schemas/apps_gnucash_window_pages_account_tree.schemas.in src/gnome/schemas/apps_gnucash_window_pages_register.schemas.in -src/gnome-search/dialog-search.c -src/gnome-search/gnc-general-search.c -src/gnome-search/gncmod-gnome-search.c -src/gnome-search/search-account.c -src/gnome-search/search-boolean.c -src/gnome-search/search-core-type.c -src/gnome-search/search-core-utils.c -src/gnome-search/search-date.c -src/gnome-search/search-double.c -src/gnome-search/search.glade -src/gnome-search/search-int64.c -src/gnome-search/search-numeric.c -src/gnome-search/search-reconciled.c -src/gnome-search/search-string.c src/gnome/top-level.c -src/gnome-utils/account-quickfill.c -src/gnome-utils/cursors.c -src/gnome-utils/dialog-account.c -src/gnome-utils/dialog-book-close.c -src/gnome-utils/dialog-commodity.c -src/gnome-utils/dialog-file-access.c -src/gnome-utils/dialog-object-references.c -src/gnome-utils/dialog-options.c -src/gnome-utils/dialog-preferences.c -src/gnome-utils/dialog-query-list.c -src/gnome-utils/dialog-reset-warnings.c -src/gnome-utils/dialog-totd.c -src/gnome-utils/dialog-transfer.c -src/gnome-utils/dialog-userpass.c -src/gnome-utils/dialog-utils.c -src/gnome-utils/druid-gconf-setup.c -src/gnome-utils/druid-gnc-xml-import.c -src/gnome-utils/druid-utils.c -src/gnome-utils/glade/commodity.glade -src/gnome-utils/glade/dialog-book-close.glade -src/gnome-utils/glade/dialog-file-access.glade -src/gnome-utils/glade/dialog-object-references.glade -src/gnome-utils/glade/dialog-query-list.glade -src/gnome-utils/glade/dialog-reset-warnings.glade -src/gnome-utils/glade/druid-gconf-setup.glade -src/gnome-utils/glade/druid-gnc-xml-import.glade -src/gnome-utils/glade/druid-provider-multifile.glade -src/gnome-utils/glade/exchange-dialog.glade -src/gnome-utils/glade/gnc-date-format.glade -src/gnome-utils/glade/gnc-gui-query.glade -src/gnome-utils/glade/preferences.glade -src/gnome-utils/glade/totd.glade -src/gnome-utils/glade/transfer.glade -src/gnome-utils/gnc-account-sel.c -src/gnome-utils/gnc-amount-edit.c -src/gnome-utils/gnc-autosave.c -src/gnome-utils/gnc-commodity-edit.c -src/gnome-utils/gnc-currency-edit.c -src/gnome-utils/gnc-date-delta.c -src/gnome-utils/gnc-date-edit.c -src/gnome-utils/gnc-date-format.c -src/gnome-utils/gnc-dense-cal.c -src/gnome-utils/gnc-dense-cal-model.c -src/gnome-utils/gnc-dense-cal-store.c -src/gnome-utils/gnc-dialog.c -src/gnome-utils/gnc-druid-gnome.c -src/gnome-utils/gnc-druid-provider-edge-gnome.c -src/gnome-utils/gnc-druid-provider-file-gnome.c -src/gnome-utils/gnc-druid-provider-multifile-gnome.c -src/gnome-utils/gnc-embedded-window.c -src/gnome-utils/gnc-file.c -src/gnome-utils/gnc-frequency.c -src/gnome-utils/gnc-general-select.c -src/gnome-utils/gnc-gnome-utils.c -src/gnome-utils/gnc-gobject-utils.c -src/gnome-utils/gnc-gtk-utils.c -src/gnome-utils/gnc-gui-query.c -src/gnome-utils/gnc-icons.c -src/gnome-utils/gnc-keyring.c -src/gnome-utils/gnc-main-window.c -src/gnome-utils/gnc-menu-extensions.c -src/gnome-utils/gncmod-gnome-utils.c -src/gnome-utils/gnc-period-select.c -src/gnome-utils/gnc-plugin.c -src/gnome-utils/gnc-plugin-file-history.c -src/gnome-utils/gnc-plugin-manager.c -src/gnome-utils/gnc-plugin-menu-additions.c -src/gnome-utils/gnc-plugin-page.c -src/gnome-utils/gnc-query-list.c -src/gnome-utils/gnc-recurrence.c -src/gnome-utils/gnc-splash.c -src/gnome-utils/gnc-sx-instance-dense-cal-adapter.c -src/gnome-utils/gnc-sx-list-tree-model-adapter.c -src/gnome-utils/gnc-tree-model-account.c -src/gnome-utils/gnc-tree-model-account-types.c -src/gnome-utils/gnc-tree-model-budget.c -src/gnome-utils/gnc-tree-model.c -src/gnome-utils/gnc-tree-model-commodity.c -src/gnome-utils/gnc-tree-model-price.c -src/gnome-utils/gnc-tree-view-account.c -src/gnome-utils/gnc-tree-view.c -src/gnome-utils/gnc-tree-view-commodity.c -src/gnome-utils/gnc-tree-view-price.c -src/gnome-utils/gnc-tree-view-sx-list.c -src/gnome-utils/gnc-window.c -src/gnome-utils/misc-gnome-utils.c -src/gnome-utils/print-session.c -src/gnome-utils/QuickFill.c -src/gnome-utils/schemas/apps_gnucash_history.schemas.in -src/gnome-utils/search-param.c -src/gnome-utils/window-main-summarybar.c src/gnome/window-autoclear.c src/gnome/window-reconcile.c -src/html/gnc-html.c src/html/gnc-html-factory.c -src/html/gnc-html-graph-gog.c src/html/gnc-html-graph-gog-gtkhtml.c src/html/gnc-html-graph-gog-webkit.c +src/html/gnc-html-graph-gog.c src/html/gnc-html-gtkhtml.c src/html/gnc-html-history.c src/html/gnc-html-webkit.c +src/html/gnc-html.c src/html/gncmod-html.c src/import-export/aqbanking/aqbanking.glade src/import-export/aqbanking/dialog-ab-trans.c @@ -364,20 +364,20 @@ src/import-export/aqbanking/druid-ab-initial.c src/import-export/aqbanking/gnc-ab-getbalance.c src/import-export/aqbanking/gnc-ab-gettrans.c src/import-export/aqbanking/gnc-ab-kvp.c -src/import-export/aqbanking/gnc-ab-transfer.c src/import-export/aqbanking/gnc-ab-trans-templ.c +src/import-export/aqbanking/gnc-ab-transfer.c src/import-export/aqbanking/gnc-ab-utils.c src/import-export/aqbanking/gnc-file-aqb-import.c src/import-export/aqbanking/gnc-gwen-gui.c -src/import-export/aqbanking/gncmod-aqbanking.c src/import-export/aqbanking/gnc-plugin-aqbanking.c +src/import-export/aqbanking/gncmod-aqbanking.c src/import-export/aqbanking/schemas/apps_gnucash_dialog_hbci.schemas.in src/import-export/csv/gnc-csv-gnumeric-popup.c src/import-export/csv/gnc-csv-import.c src/import-export/csv/gnc-csv-model.c src/import-export/csv/gnc-csv-preview-dialog.glade -src/import-export/csv/gncmod-csv-import.c src/import-export/csv/gnc-plugin-csv.c +src/import-export/csv/gncmod-csv-import.c src/import-export/generic-import.glade src/import-export/gnc-import-desc-format.c src/import-export/gnc-import-format-cb.c @@ -396,11 +396,11 @@ src/import-export/hbci/gnc-hbci-actions.c src/import-export/hbci/gnc-hbci-getbalance.c src/import-export/hbci/gnc-hbci-gettrans.c src/import-export/hbci/gnc-hbci-kvp.c -src/import-export/hbci/gnc-hbci-transfer.c src/import-export/hbci/gnc-hbci-trans-templ.c +src/import-export/hbci/gnc-hbci-transfer.c src/import-export/hbci/gnc-hbci-utils.c -src/import-export/hbci/gncmod-hbci.c src/import-export/hbci/gnc-plugin-hbci.c +src/import-export/hbci/gncmod-hbci.c src/import-export/hbci/hbci-interaction.c src/import-export/hbci/schemas/apps_gnucash_dialog_hbci.schemas.in src/import-export/import-account-matcher.c @@ -415,15 +415,15 @@ src/import-export/import-provider-format.glade src/import-export/import-settings.c src/import-export/import-utilities.c src/import-export/log-replay/gnc-log-replay.c -src/import-export/log-replay/gncmod-log-replay.c src/import-export/log-replay/gnc-plugin-log-replay.c -src/import-export/ofx/gncmod-ofx-import.c +src/import-export/log-replay/gncmod-log-replay.c src/import-export/ofx/gnc-ofx-import.c src/import-export/ofx/gnc-plugin-ofx.c +src/import-export/ofx/gncmod-ofx-import.c src/import-export/qif-import/dialog-account-picker.c src/import-export/qif-import/druid-qif-import.c -src/import-export/qif-import/gncmod-qif-import.c src/import-export/qif-import/gnc-plugin-qif-import.c +src/import-export/qif-import/gncmod-qif-import.c src/import-export/qif-import/qif.glade src/import-export/qif-import/schemas/apps_gnucash_import_qif.schemas.in src/import-export/qif-io-core/gncmod-qifiocore.c @@ -434,9 +434,10 @@ src/import-export/schemas/apps_gnucash_import_generic_matcher.schemas.in src/libqof/qof/gnc-date.c src/libqof/qof/gnc-numeric.c src/libqof/qof/guid.c -src/libqof/qof/kvp_frame.c src/libqof/qof/kvp-util.c +src/libqof/qof/kvp_frame.c src/libqof/qof/md5.c +src/libqof/qof/qof-win32.c src/libqof/qof/qofbackend.c src/libqof/qof/qofbook.c src/libqof/qof/qofbookmerge.c @@ -453,20 +454,19 @@ src/libqof/qof/qofquerycore.c src/libqof/qof/qofreference.c src/libqof/qof/qofsession.c src/libqof/qof/qofutil.c -src/libqof/qof/qof-win32.c src/register/ledger-core/dialog-dup-trans.c src/register/ledger-core/gnc-ledger-display.c src/register/ledger-core/gncmod-ledger-core.c -src/register/ledger-core/split-register.c src/register/ledger-core/split-register-control.c src/register/ledger-core/split-register-layout.c src/register/ledger-core/split-register-load.c -src/register/ledger-core/split-register-model.c src/register/ledger-core/split-register-model-save.c +src/register/ledger-core/split-register-model.c src/register/ledger-core/split-register-util.c +src/register/ledger-core/split-register.c src/register/register-core/basiccell.c -src/register/register-core/cellblock.c src/register/register-core/cell-factory.c +src/register/register-core/cellblock.c src/register/register-core/checkboxcell.c src/register/register-core/formulacell.c src/register/register-core/gncmod-register-core.c @@ -502,15 +502,15 @@ src/report/report-gnome/custom-report-dialog.glade src/report/report-gnome/dialog-column-view.c src/report/report-gnome/dialog-custom-report.c src/report/report-gnome/dialog-style-sheet.c -src/report/report-gnome/gncmod-report-gnome.c src/report/report-gnome/gnc-plugin-page-report.c +src/report/report-gnome/gncmod-report-gnome.c src/report/report-gnome/report.glade src/report/report-gnome/window-report.c -src/report/report-system/gncmod-report-system.c src/report/report-system/gnc-report.c +src/report/report-system/gncmod-report-system.c src/report/standard-reports/gncmod-standard-reports.c -src/report/stylesheets/gncmod-stylesheets.c src/report/stylesheets/gnc-plugin-stylesheets.c +src/report/stylesheets/gncmod-stylesheets.c src/report/utility-reports/gncmod-utility-reports.c src/tax/us/gncmod-tax-us.c src/gnome/gnucash.desktop.in.in diff --git a/src/backend/dbi/gnc-backend-dbi.c b/src/backend/dbi/gnc-backend-dbi.c index d360518257..6f62639152 100644 --- a/src/backend/dbi/gnc-backend-dbi.c +++ b/src/backend/dbi/gnc-backend-dbi.c @@ -1522,7 +1522,10 @@ row_dispose( /*@ only @*/ GncSqlRow* row ) { for ( node = dbi_row->gvalue_list; node != NULL; node = node->next ) { - GValue* value = (GValue*)node->data; + GValue* value; + if ( !G_IS_VALUE(node->data) ) + continue; + value = (GValue*)node->data; if ( G_VALUE_HOLDS_STRING(value) ) { g_free( (gpointer)g_value_get_string( value ) ); diff --git a/src/backend/sql/gnc-slots-sql.c b/src/backend/sql/gnc-slots-sql.c index f88be85138..8e964a7539 100644 --- a/src/backend/sql/gnc-slots-sql.c +++ b/src/backend/sql/gnc-slots-sql.c @@ -171,12 +171,13 @@ get_key_from_path( GString *path ) /* Remove trailing /es */ if ( key == NULL ) return str; - while ( str - key == 0 ) + while ( str + strlen(str) - key == 1 ) { *key = '\0'; key = strrchr( str, '/' ); } if ( key == NULL ) return str; +/* Now advance key past the last intermediate / to get the post-delimiter string */ while ( *key == '/') ++key; ret = strdup( key ); diff --git a/src/bin/gnucash-bin.c b/src/bin/gnucash-bin.c index e4d8ba76a6..9f2ca6e619 100644 --- a/src/bin/gnucash-bin.c +++ b/src/bin/gnucash-bin.c @@ -36,6 +36,7 @@ #include "gnc-version.h" #include "gnc-engine.h" #include "gnc-filepath-utils.h" +#include "gnc-ui-util.h" #include "gnc-file.h" #include "gnc-hooks.h" #include "top-level.h" @@ -286,7 +287,7 @@ set_mac_locale() NSString *this_locale; NSString *currency = [locale objectForKey: NSLocaleCurrencyCode]; NSString *money_locale = nil; - while (this_locale = (NSString*)[locale_iter nextObject]) + while ((this_locale = (NSString*)[locale_iter nextObject])) if ([[[[NSLocale alloc] initWithLocaleIdentifier: this_locale] objectForKey: NSLocaleCurrencyCode] isEqualToString: currency]) { @@ -321,17 +322,18 @@ set_mac_locale() NSString *this_lang; NSArray *elements; NSArray *new_languages = [NSArray array]; - while (this_lang = [lang_iter nextObject]) { + while ((this_lang = [lang_iter nextObject])) { this_lang = [this_lang stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString: @"\""]]; elements = [this_lang componentsSeparatedByString: @"-"]; if ([elements count] > 1) { - if ([[elements objectAtIndex: 0] isEqualToString: @"zh"]) + if ([[elements objectAtIndex: 0] isEqualToString: @"zh"]) { if ([[elements objectAtIndex: 1] isEqualToString: @"Hans"]) this_lang = [NSString stringWithString: @"zh_CN"]; else this_lang = [NSString stringWithString: @"zh_TW"]; + } } else this_lang = [elements componentsJoinedByString: @"_"]; diff --git a/src/gnome-utils/gnc-gnome-utils.c b/src/gnome-utils/gnc-gnome-utils.c index dfcdd37f82..28b9a1e9d1 100644 --- a/src/gnome-utils/gnc-gnome-utils.c +++ b/src/gnome-utils/gnc-gnome-utils.c @@ -330,7 +330,7 @@ gnc_gnome_help (const char *dir, const char *detail) NSEnumerator *lang_iter = [languages objectEnumerator]; NSString *path; NSString *this_lang; - while(this_lang = [lang_iter nextObject]) { + while((this_lang = [lang_iter nextObject])) { NSArray *elements; unsigned int paths; NSString *completed_path = [NSString alloc];