Fix min/max needed for ascii to INTERNAL conversion

Message ID mvmsi02utc4.fsf@hawking.suse.de
State New, archived
Headers

Commit Message

Andreas Schwab March 7, 2016, 4:48 p.m. UTC
  The values are swapped.  Installed as obvious.

Andreas.

	* iconv/gconv_builtin.h ("=ascii->INTERNAL"): Correct min/max
	needed arguments.
---
 iconv/gconv_builtin.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Florian Weimer March 7, 2016, 9:20 p.m. UTC | #1
On 03/07/2016 05:48 PM, Andreas Schwab wrote:
> The values are swapped.  Installed as obvious.
> 
> Andreas.
> 
> 	* iconv/gconv_builtin.h ("=ascii->INTERNAL"): Correct min/max
> 	needed arguments.

What's the impact?  Is it possible to write a test that shows a difference?

(I just want to make sure this is not user-visible and thus does not
need to be tracked in Bugzilla.)

Thanks,
Florian
  
Andreas Schwab March 8, 2016, 9:19 a.m. UTC | #2
Florian Weimer <fweimer@redhat.com> writes:

> On 03/07/2016 05:48 PM, Andreas Schwab wrote:
>> The values are swapped.  Installed as obvious.
>> 
>> Andreas.
>> 
>> 	* iconv/gconv_builtin.h ("=ascii->INTERNAL"): Correct min/max
>> 	needed arguments.
>
> What's the impact?  Is it possible to write a test that shows a difference?

It's not a correctness issue, just efficiency.  The max_needed_to value
is used in gconv_open to size the internal buffer between two steps, and
the min_needed_from value has no real relevance (when
__gconv_transform_ascii_internal returns __GCONV_EMPTY_INPUT, it has
already consumed all of the input buffer anyway).  The other two values
are never used.

Andreas.
  
Florian Weimer March 8, 2016, 9:36 a.m. UTC | #3
On 03/08/2016 10:19 AM, Andreas Schwab wrote:
> Florian Weimer <fweimer@redhat.com> writes:
> 
>> On 03/07/2016 05:48 PM, Andreas Schwab wrote:
>>> The values are swapped.  Installed as obvious.
>>>
>>> Andreas.
>>>
>>> 	* iconv/gconv_builtin.h ("=ascii->INTERNAL"): Correct min/max
>>> 	needed arguments.
>>
>> What's the impact?  Is it possible to write a test that shows a difference?
> 
> It's not a correctness issue, just efficiency.  The max_needed_to value
> is used in gconv_open to size the internal buffer between two steps, and
> the min_needed_from value has no real relevance (when
> __gconv_transform_ascii_internal returns __GCONV_EMPTY_INPUT, it has
> already consumed all of the input buffer anyway).  The other two values
> are never used.

Thank you for your detailed explanation.  It answers my question.

Florian
  

Patch

diff --git a/iconv/gconv_builtin.h b/iconv/gconv_builtin.h
index 856d0a9..487aa73 100644
--- a/iconv/gconv_builtin.h
+++ b/iconv/gconv_builtin.h
@@ -84,7 +84,7 @@  BUILTIN_ALIAS ("OSF00010020//", "ANSI_X3.4-1968//")
 
 BUILTIN_TRANSFORMATION ("ANSI_X3.4-1968//", "INTERNAL", 1, "=ascii->INTERNAL",
 			__gconv_transform_ascii_internal, __gconv_btwoc_ascii,
-			4, 4, 1, 1)
+			1, 1, 4, 4)
 
 BUILTIN_TRANSFORMATION ("INTERNAL", "ANSI_X3.4-1968//", 1, "=INTERNAL->ascii",
 			__gconv_transform_internal_ascii, NULL, 4, 4, 1, 1)