r19904 - gnucash/trunk - Bug #635859: Strip all trailing '/'es from kvp_slot paths when loading.

John Ralls jralls at code.gnucash.org
Fri Dec 3 18:24:34 EST 2010


Author: jralls
Date: 2010-12-03 18:24:34 -0500 (Fri, 03 Dec 2010)
New Revision: 19904
Trac: http://svn.gnucash.org/trac/changeset/19904

Modified:
   gnucash/trunk/po/POTFILES.in
   gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
   gnucash/trunk/src/backend/sql/gnc-slots-sql.c
   gnucash/trunk/src/bin/gnucash-bin.c
   gnucash/trunk/src/gnome-utils/gnc-gnome-utils.c
Log:
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.



Modified: gnucash/trunk/po/POTFILES.in
===================================================================
--- gnucash/trunk/po/POTFILES.in	2010-12-03 21:14:54 UTC (rev 19903)
+++ gnucash/trunk/po/POTFILES.in	2010-12-03 23:24:34 UTC (rev 19904)
@@ -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-account-merge.c
 src/app-utils/gnc-accounting-period.c
-src/app-utils/gnc-account-merge.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-help-utils.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-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-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/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/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,104 +142,49 @@
 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/gnc-associate-account.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/gnc-associate-account.c
 src/engine/gncBillTerm.c
-src/engine/gnc-budget.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/dialog-commodities.c
-src/gnome/dialog-fincalc.c
-src/gnome/dialog-find-transactions.c
-src/gnome/dialog-new-user.c
-src/gnome/dialog-price-edit-db.c
-src/gnome/dialog-price-editor.c
-src/gnome/dialog-print-check.c
-src/gnome/dialog-progress.c
-src/gnome/dialog-sx-editor.c
-src/gnome/dialog-sx-from-trans.c
-src/gnome/dialog-sx-since-last-run.c
-src/gnome/dialog-tax-info.c
-src/gnome/druid-acct-period.c
-src/gnome/druid-hierarchy.c
-src/gnome/druid-loan.c
-src/gnome/druid-stock-split.c
-src/gnome/glade/account.glade
-src/gnome/glade/acctperiod.glade
-src/gnome/glade/autoclear.glade
-src/gnome/glade/budget.glade
-src/gnome/glade/commodities.glade
-src/gnome/glade/fincalc.glade
-src/gnome/glade/lots.glade
-src/gnome/glade/newuser.glade
-src/gnome/glade/price.glade
-src/gnome/glade/print.glade
-src/gnome/glade/progress.glade
-src/gnome/glade/reconcile.glade
-src/gnome/glade/register.glade
-src/gnome/glade/sched-xact.glade
-src/gnome/glade/stocks.glade
-src/gnome/glade/tax.glade
-src/gnome/glade/userpass.glade
-src/gnome/gnc-plugin-account-tree.c
-src/gnome/gnc-plugin-basic-commands.c
-src/gnome/gnc-plugin-budget.c
-src/gnome/gnc-plugin-page-account-tree.c
-src/gnome/gnc-plugin-page-budget.c
-src/gnome/gnc-plugin-page-register.c
-src/gnome/gnc-plugin-page-sx-list.c
-src/gnome/gnc-plugin-register.c
-src/gnome/gnc-split-reg.c
-src/gnome/lot-viewer.c
-src/gnome/reconcile-list.c
-src/gnome/schemas/apps_gnucash_dialog_commodities.schemas.in
-src/gnome/schemas/apps_gnucash_dialog_common.schemas.in
-src/gnome/schemas/apps_gnucash_dialog_prices.schemas.in
-src/gnome/schemas/apps_gnucash_dialog_print_checks.schemas.in
-src/gnome/schemas/apps_gnucash_dialog_reconcile.schemas.in
-src/gnome/schemas/apps_gnucash_dialog_scheduled_transctions.schemas.in
-src/gnome/schemas/apps_gnucash_dialog_totd.schemas.in
-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
@@ -249,12 +194,12 @@
 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-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
@@ -296,9 +241,9 @@
 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-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
@@ -316,46 +261,101 @@
 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-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-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-model.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-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/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/dialog-commodities.c
+src/gnome/dialog-fincalc.c
+src/gnome/dialog-find-transactions.c
+src/gnome/dialog-new-user.c
+src/gnome/dialog-price-edit-db.c
+src/gnome/dialog-price-editor.c
+src/gnome/dialog-print-check.c
+src/gnome/dialog-progress.c
+src/gnome/dialog-sx-editor.c
+src/gnome/dialog-sx-from-trans.c
+src/gnome/dialog-sx-since-last-run.c
+src/gnome/dialog-tax-info.c
+src/gnome/druid-acct-period.c
+src/gnome/druid-hierarchy.c
+src/gnome/druid-loan.c
+src/gnome/druid-stock-split.c
+src/gnome/glade/account.glade
+src/gnome/glade/acctperiod.glade
+src/gnome/glade/autoclear.glade
+src/gnome/glade/budget.glade
+src/gnome/glade/commodities.glade
+src/gnome/glade/fincalc.glade
+src/gnome/glade/lots.glade
+src/gnome/glade/newuser.glade
+src/gnome/glade/price.glade
+src/gnome/glade/print.glade
+src/gnome/glade/progress.glade
+src/gnome/glade/reconcile.glade
+src/gnome/glade/register.glade
+src/gnome/glade/sched-xact.glade
+src/gnome/glade/stocks.glade
+src/gnome/glade/tax.glade
+src/gnome/glade/userpass.glade
+src/gnome/gnc-plugin-account-tree.c
+src/gnome/gnc-plugin-basic-commands.c
+src/gnome/gnc-plugin-budget.c
+src/gnome/gnc-plugin-page-account-tree.c
+src/gnome/gnc-plugin-page-budget.c
+src/gnome/gnc-plugin-page-register.c
+src/gnome/gnc-plugin-page-sx-list.c
+src/gnome/gnc-plugin-register.c
+src/gnome/gnc-split-reg.c
+src/gnome/lot-viewer.c
+src/gnome/reconcile-list.c
+src/gnome/schemas/apps_gnucash_dialog_commodities.schemas.in
+src/gnome/schemas/apps_gnucash_dialog_common.schemas.in
+src/gnome/schemas/apps_gnucash_dialog_prices.schemas.in
+src/gnome/schemas/apps_gnucash_dialog_print_checks.schemas.in
+src/gnome/schemas/apps_gnucash_dialog_reconcile.schemas.in
+src/gnome/schemas/apps_gnucash_dialog_scheduled_transctions.schemas.in
+src/gnome/schemas/apps_gnucash_dialog_totd.schemas.in
+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/top-level.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/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-trans-templ.c
 src/import-export/aqbanking/gnc-ab-transfer.c
-src/import-export/aqbanking/gnc-ab-trans-templ.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/gnc-plugin-aqbanking.c
 src/import-export/aqbanking/gncmod-aqbanking.c
-src/import-export/aqbanking/gnc-plugin-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/gnc-plugin-csv.c
 src/import-export/csv/gncmod-csv-import.c
-src/import-export/csv/gnc-plugin-csv.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-getbalance.c
 src/import-export/hbci/gnc-hbci-gettrans.c
 src/import-export/hbci/gnc-hbci-kvp.c
+src/import-export/hbci/gnc-hbci-trans-templ.c
 src/import-export/hbci/gnc-hbci-transfer.c
-src/import-export/hbci/gnc-hbci-trans-templ.c
 src/import-export/hbci/gnc-hbci-utils.c
+src/import-export/hbci/gnc-plugin-hbci.c
 src/import-export/hbci/gncmod-hbci.c
-src/import-export/hbci/gnc-plugin-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-settings.c
 src/import-export/import-utilities.c
 src/import-export/log-replay/gnc-log-replay.c
+src/import-export/log-replay/gnc-plugin-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/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/gnc-plugin-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/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/libqof/qof/gnc-date.c
 src/libqof/qof/gnc-numeric.c
 src/libqof/qof/guid.c
+src/libqof/qof/kvp-util.c
 src/libqof/qof/kvp_frame.c
-src/libqof/qof/kvp-util.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/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-save.c
 src/register/ledger-core/split-register-model.c
-src/register/ledger-core/split-register-model-save.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/cell-factory.c
 src/register/register-core/cellblock.c
-src/register/register-core/cell-factory.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/dialog-column-view.c
 src/report/report-gnome/dialog-custom-report.c
 src/report/report-gnome/dialog-style-sheet.c
+src/report/report-gnome/gnc-plugin-page-report.c
 src/report/report-gnome/gncmod-report-gnome.c
-src/report/report-gnome/gnc-plugin-page-report.c
 src/report/report-gnome/report.glade
 src/report/report-gnome/window-report.c
+src/report/report-system/gnc-report.c
 src/report/report-system/gncmod-report-system.c
-src/report/report-system/gnc-report.c
 src/report/standard-reports/gncmod-standard-reports.c
+src/report/stylesheets/gnc-plugin-stylesheets.c
 src/report/stylesheets/gncmod-stylesheets.c
-src/report/stylesheets/gnc-plugin-stylesheets.c
 src/report/utility-reports/gncmod-utility-reports.c
 src/tax/us/gncmod-tax-us.c
 src/gnome/gnucash.desktop.in.in

Modified: gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
===================================================================
--- gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c	2010-12-03 21:14:54 UTC (rev 19903)
+++ gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c	2010-12-03 23:24:34 UTC (rev 19904)
@@ -1522,7 +1522,10 @@
     {
         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 ) );

Modified: gnucash/trunk/src/backend/sql/gnc-slots-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-slots-sql.c	2010-12-03 21:14:54 UTC (rev 19903)
+++ gnucash/trunk/src/backend/sql/gnc-slots-sql.c	2010-12-03 23:24:34 UTC (rev 19904)
@@ -171,12 +171,13 @@
 
 /* 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 );

Modified: gnucash/trunk/src/bin/gnucash-bin.c
===================================================================
--- gnucash/trunk/src/bin/gnucash-bin.c	2010-12-03 21:14:54 UTC (rev 19903)
+++ gnucash/trunk/src/bin/gnucash-bin.c	2010-12-03 23:24:34 UTC (rev 19904)
@@ -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 @@
 	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 @@
 	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: @"_"];

Modified: gnucash/trunk/src/gnome-utils/gnc-gnome-utils.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-gnome-utils.c	2010-12-03 21:14:54 UTC (rev 19903)
+++ gnucash/trunk/src/gnome-utils/gnc-gnome-utils.c	2010-12-03 23:24:34 UTC (rev 19904)
@@ -330,7 +330,7 @@
 	  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];



More information about the gnucash-changes mailing list