summary refs log tree commit diff
path: root/iconv/skeleton.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-03-14 09:11:00 +0000
committerUlrich Drepper <drepper@redhat.com>2000-03-14 09:11:00 +0000
commit0aece08ded7448746a91f33233f0ef94ba10b936 (patch)
treecf69f38fc49f838038bb03c80cba0946559f91d9 /iconv/skeleton.c
parent91eecefd761001298771b7aeaa25a98bcf26574b (diff)
downloadglibc-0aece08ded7448746a91f33233f0ef94ba10b936.tar.gz
glibc-0aece08ded7448746a91f33233f0ef94ba10b936.tar.xz
glibc-0aece08ded7448746a91f33233f0ef94ba10b936.zip
Update.
2000-03-14  Ulrich Drepper  <drepper@redhat.com>

	* iconv/skeleton.c: Increment __invocation_counter in inner loop
	since modules depend on it counting the number of times the conversion
	function got called.

	* iconv/gconv_open.c: Optimize loop to setup step data structure.

	* iconv/gconv.h: Pretty print.

2000-03-04  Ulrich Drepper  <drepper@redhat.com>

	* posix/wordexp-test.c: Correct one of the tests added in the last
	change.  Really get the root passwd entry to check again ~root.
Diffstat (limited to 'iconv/skeleton.c')
-rw-r--r--iconv/skeleton.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/iconv/skeleton.c b/iconv/skeleton.c
index 350b532e3a..726a76f00e 100644
--- a/iconv/skeleton.c
+++ b/iconv/skeleton.c
@@ -261,6 +261,9 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
 			      data->__statep, step->__data, &converted
 			      EXTRA_LOOP_ARGS);
 
+	  /* We finished one use of the loops.  */
+	  ++data->__invocation_counter;
+
 	  /* If this is the last step leave the loop, there is nothing
              we can do.  */
 	  if (data->__is_last)
@@ -324,6 +327,11 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
 			 rerun.  */
 		      assert (outbuf == outerr);
 		      assert (nstatus == __GCONV_FULL_OUTPUT);
+
+		      /* If we haven't consumed a single byte decrement
+			 the invocation counter.  */
+		      if (outbuf == outstart)
+			--data->__invocation_counter;
 #endif	/* reset input buffer */
 		    }
 
@@ -336,9 +344,6 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
 		if (status == __GCONV_FULL_OUTPUT)
 		  status = __GCONV_OK;
 	    }
-
-	  /* We finished one use of the loops.  */
-	  ++data->__invocation_counter;
 	}
       while (status == __GCONV_OK);