summaryrefslogtreecommitdiff
path: root/iconv/loop.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-08-25 22:13:09 +0000
committerUlrich Drepper <drepper@redhat.com>2000-08-25 22:13:09 +0000
commitb572c2da318d45e89bec5425692be84a2ac27ed4 (patch)
tree2a71538bcc87638e30a7b6f47092a2a3645c5cb3 /iconv/loop.c
parent0cdb4983fc3d3b97bebf8c466bdef6226b610996 (diff)
Update.
2000-08-25 Ulrich Drepper <drepper@redhat.com> * locales/i18n (default_missing): Change back to only U003F.
Diffstat (limited to 'iconv/loop.c')
-rw-r--r--iconv/loop.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/iconv/loop.c b/iconv/loop.c
index 9d168d84e9..3a2779ed4a 100644
--- a/iconv/loop.c
+++ b/iconv/loop.c
@@ -170,7 +170,8 @@
/* To make it easier for the writers of the modules, we define a macro
to test whether we have to ignore errors. */
-#define ignore_errors_p() (flags & __GCONV_IGNORE_ERRORS)
+#define ignore_errors_p() \
+ (irreversible != NULL && (flags & __GCONV_IGNORE_ERRORS))
/* Error handling with transliteration/transcription function use and
@@ -181,6 +182,12 @@
struct __gconv_trans_data *trans; \
\
result = __GCONV_ILLEGAL_INPUT; \
+ \
+ if (irreversible == NULL) \
+ /* This means we are in call from __gconv_transliterate. In this \
+ case we are not doing any error recovery outself. */ \
+ break; \
+ \
/* First try the transliteration methods. */ \
for (trans = step_data->__trans; trans != NULL; trans = trans->__next) \
{ \
@@ -197,7 +204,7 @@
/* Next see whether we have to ignore the error. If not, stop. */ \
if (! ignore_errors_p ()) \
break; \
- \
+ \
/* When we come here it means we ignore the character. */ \
++*irreversible; \
inptr += Incr; \