X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Funinorm%2Fu-normcoll.h;h=299d6fa69405bf17b8c65dc4bff16238cf4c2cd0;hb=refs%2Fheads%2Fmaster;hp=5af764eba1d8ddee31492b03815d362530589a5d;hpb=dff731fd63fefabc0daf15cdf59fb122d471146c;p=gnulib.git diff --git a/lib/uninorm/u-normcoll.h b/lib/uninorm/u-normcoll.h index 5af764eba..299d6fa69 100644 --- a/lib/uninorm/u-normcoll.h +++ b/lib/uninorm/u-normcoll.h @@ -1,5 +1,5 @@ /* Locale dependent, normalization insensitive comparison of Unicode strings. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2009. This program is free software: you can redistribute it and/or modify it @@ -17,7 +17,7 @@ int FUNC (const UNIT *s1, size_t n1, const UNIT *s2, size_t n2, - uninorm_t nf, int *result) + uninorm_t nf, int *resultp) { char buf1[2048]; char buf2[2048]; @@ -31,22 +31,26 @@ FUNC (const UNIT *s1, size_t n1, const UNIT *s2, size_t n2, transformed1_length = sizeof (buf1); transformed1 = U_NORMXFRM (s1, n1, nf, buf1, &transformed1_length); if (transformed1 == NULL) - return errno; + /* errno is set here. */ + return -1; /* Normalize and transform S2. */ transformed2_length = sizeof (buf2); transformed2 = U_NORMXFRM (s2, n2, nf, buf2, &transformed2_length); if (transformed2 == NULL) { - int saved_errno = errno; if (transformed1 != buf1) - free (transformed1); - return saved_errno; + { + int saved_errno = errno; + free (transformed1); + errno = saved_errno; + } + return -1; } /* Compare the transformed strings. */ cmp = memcmp2 (transformed1, transformed1_length, - transformed2, transformed2_length); + transformed2, transformed2_length); if (cmp < 0) cmp = -1; else if (cmp > 0) @@ -56,6 +60,6 @@ FUNC (const UNIT *s1, size_t n1, const UNIT *s2, size_t n2, free (transformed2); if (transformed1 != buf1) free (transformed1); - *result = cmp; + *resultp = cmp; return 0; }