From nsh@dream.mplik.ru  Thu Dec  9 01:51:17 1999
Return-Path: <nsh@dream.mplik.ru>
Received: from dream.mplik.ru (dream.mplik.ru [195.58.1.132])
	by hub.freebsd.org (Postfix) with ESMTP id 247D414A0D
	for <FreeBSD-gnats-submit@freebsd.org>; Thu,  9 Dec 1999 01:51:12 -0800 (PST)
	(envelope-from nsh@dream.mplik.ru)
Received: (from nsh@localhost)
	by dream.mplik.ru (8.9.3/8.9.3) id OAA38153;
	Thu, 9 Dec 1999 14:50:52 +0500 (YEKT)
	(envelope-from nsh)
Message-Id: <199912090950.OAA38153@dream.mplik.ru>
Date: Thu, 9 Dec 1999 14:50:52 +0500 (YEKT)
From: Nikita Shamgunov <nsh@dream.mplik.ru>
Reply-To: nsh@dream.mplik.ru
To: FreeBSD-gnats-submit@freebsd.org
Subject: bug in sort
X-Send-Pr-Version: 3.2

>Number:         15370
>Category:       bin
>Synopsis:       bug in sort
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    markm
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Dec  9 02:00:01 PST 1999
>Closed-Date:    Mon Dec 13 13:06:28 PST 1999
>Last-Modified:  Mon Dec 13 13:07:23 PST 1999
>Originator:     Nikita Shamgunov
>Release:        FreeBSD 3.3-STABLE i386
>Organization:
URAL RELCOM
>Environment:
perl locale KOI8-R

	

>Description:

          
     .
>How-To-Repeat:

#!/usr/bin/perl

use strict;
use locale;
use POSIX qw( locale_h );
setlocale( LC_ALL, 'KOI8-R' );

my @array;
while( <DATA> ) {
	next if( /^#/ );
	s/\s*(\S+)\s*/$1/;
	push( @array, $_ );
}

#
#        lc -   
# my @array1 = sort {lc1($a) cmp lc1($b)} @array;
#

#
#  
my @array1 = sort {lc($a) cmp lc($b)} @array;

#  
print join( "\n", @array1 );

sub lc1 {
	my $str = shift;
	$str =~ tr///;
        return $str;
}

__DATA__




>Fix:
	
	


>Release-Note:
>Audit-Trail:

From: "Andrey A. Chernov" <ache@freebsd.org>
To: Nikita Shamgunov <nsh@dream.mplik.ru>
Cc: FreeBSD-gnats-submit@freebsd.org
Subject: Re: bin/15370: bug in sort
Date: Fri, 10 Dec 1999 06:20:40 -0800

 On Thu, Dec 09, 1999 at 02:50:52PM +0500, Nikita Shamgunov wrote:
 > #
 > #  
 > my @array1 = sort {lc($a) cmp lc($b)} @array;
 
 It looks like some problem with lc+cmp combination.
 It works when result of lc assigned to variable first, i.e.
 
 sub comp {
 $aa = lc($a);
 $bb = lc($b);
 return $aa cmp $bb;
 }
 
 -- 
 Andrey A. Chernov
 http://nagual.pp.ru/~ache/
 MTH/SH/HE S-- W-- N+ PEC>+ D A a++ C G>+ QH+(++) 666+>++ Y
 

From: "Andrey A. Chernov" <ache@freebsd.org>
To: Nikita Shamgunov <nsh@dream.mplik.ru>
Cc: FreeBSD-gnats-submit@freebsd.org
Subject: Re: bin/15370: bug in sort
Date: Fri, 10 Dec 1999 09:15:41 -0800

 On Thu, Dec 09, 1999 at 02:50:52PM +0500, Nikita Shamgunov wrote:
 > my @array1 = sort {lc($a) cmp lc($b)} @array;
 
 This patch should fix the problem:
 
 --- pp.c.old	Wed May 26 06:04:22 1999
 +++ pp.c	Fri Dec 10 19:52:31 1999
 @@ -2178,7 +2178,8 @@
  	else
  	    *s = toUPPER(*s);
      }
 -
 +    if (SvSMAGICAL(sv))
 +	mg_set(sv);
      RETURN;
  }
  
 @@ -2207,6 +2208,8 @@
      }
  
      SETs(sv);
 +    if (SvSMAGICAL(sv))
 +	mg_set(sv);
      RETURN;
  }
  
 @@ -2239,6 +2242,8 @@
  		*s = toUPPER(*s);
  	}
      }
 +    if (SvSMAGICAL(sv))
 +	mg_set(sv);
      RETURN;
  }
  
 @@ -2271,6 +2276,8 @@
  		*s = toLOWER(*s);
  	}
      }
 +    if (SvSMAGICAL(sv))
 +	mg_set(sv);
      RETURN;
  }
  
 @@ -2298,6 +2305,8 @@
      else
  	sv_setpvn(TARG, s, len);
      SETs(TARG);
 +    if (SvSMAGICAL(TARG))
 +	mg_set(TARG);
      RETURN;
  }
  
 
 -- 
 Andrey A. Chernov
 http://nagual.pp.ru/~ache/
 MTH/SH/HE S-- W-- N+ PEC>+ D A a++ C G>+ QH+(++) 666+>++ Y
 
Responsible-Changed-From-To: freebsd-bugs->markm 
Responsible-Changed-By: sheldonh 
Responsible-Changed-When: Mon Dec 13 03:52:01 PST 1999 
Responsible-Changed-Why:  
Mark will be interested in the patch. 
State-Changed-From-To: open->closed 
State-Changed-By: ache 
State-Changed-When: Mon Dec 13 13:06:28 PST 1999 
State-Changed-Why:  
Fixed. 
>Unformatted:
