diff --git a/src/core-utils/core-utils.i b/src/core-utils/core-utils.i index 6c40f09c7c..37ca34f1c8 100644 --- a/src/core-utils/core-utils.i +++ b/src/core-utils/core-utils.i @@ -19,8 +19,5 @@ void gnc_scm_log_error(const gchar *); void gnc_scm_log_msg(const gchar *); void gnc_scm_log_debug(const gchar *); -/* Special treatment because the string changes in place. */ -%typemap(in) gchar * " $1 = SCM_STRING_CHARS($input); " -%typemap(freearg) gchar * "" -void gnc_utf8_strip_invalid (gchar *str); - +%newobject gnc_utf8_strip_invalid_strdup; +gchar * gnc_utf8_strip_invalid_strdup(const gchar *); diff --git a/src/core-utils/core-utils.scm b/src/core-utils/core-utils.scm index 23cf473ad1..ffa9438045 100644 --- a/src/core-utils/core-utils.scm +++ b/src/core-utils/core-utils.scm @@ -11,7 +11,7 @@ (re-export gnc-is-debugging) (re-export g-find-program-in-path) -(re-export gnc-utf8-strip-invalid) +(re-export gnc-utf8-strip-invalid-strdup) (re-export gnc-scm-log-warn) (re-export gnc-scm-log-error) (re-export gnc-scm-log-msg) diff --git a/src/import-export/qif-import/qif-file.scm b/src/import-export/qif-import/qif-file.scm index 00c244cc36..99b090c43e 100644 --- a/src/import-export/qif-import/qif-file.scm +++ b/src/import-export/qif-import/qif-file.scm @@ -71,8 +71,8 @@ ;; pick the 1-char tag off from the remainder of the line (set! tag (string-ref line 0)) (set! value (substring line 1)) - (gnc-utf8-strip-invalid value) ;; changes value in-place - + (set! value (gnc-utf8-strip-invalid-strdup value)) + ;; now do something with the line (if (eq? tag #\!)