Austin Group Defect Tracker

Aardvark Mark IV


Viewing Issue Simple Details Jump to Notes ] Issue History ] Print ]
ID Category Severity Type Date Submitted Last Update
0000283 [1003.1(2008)/Issue 7] System Interfaces Objection Error 2010-07-15 11:17 2013-04-16 13:06
Reporter geoffclare View Status public  
Assigned To ajosey
Priority normal Resolution Accepted  
Status Closed  
Name Geoff Clare
Organization The Open Group
User Reference
Section isalnum
Page Number 1135
Line Number 37928
Interp Status Approved
Final Accepted Text See Note: 0000485
Summary 0000283: Invalid locale_t values and LC_GLOBAL_LOCALE
Description There are two related issues concerning invalid and special locale_t
values.

1. It is expected that most implementations of functions such as
   isalnum_l() will not perform any checking of the locale_t value
   they are passed for reasons of efficiency. This means the optional
   EINVAL errors for these functions have exactly the same issue that
   the optional EINVAL errors for pthread_mutex_lock() and other
   pthread functions had in SUSv3. If the error condition occurs but
   is not detected, the intention is that it results in undefined
   behaviour. This issue was resolved for the pthread functions by
   removing the optional EINVAL errors and adding statements about
   undefined behaviour (in cases where there was not one already).
   The "invalid locale_t" errors should get the same treatment.

2. It is not clear that applications should not pass a locale_t
   value equal to LC_GLOBAL_LOCALE to any function other than
   newlocale(). Although the <locale.h> page says:

     The <locale.h> header shall define LC_GLOBAL_LOCALE, a special
     locale object descriptor used by the uselocale() function.

   this is not sufficient. This statement only implies that
   applications should not use the symbol LC_GLOBAL_LOCALE from that
   header with other functions, but it is possible for applications
   to obtain a locale_t value equal to LC_GLOBAL_LOCALE without ever
   using the symbol, since that value can be returned by a call to
   uselocale((locale_t)0).

   Again, on most implementations the affected functions will not
   check for this value and therefore if it passed to the function the
   behaviour is undefined. All functions that take a locale_t
   argument, other than uselocale() and newlocale(), should have a
   statement added about undefined behaviour if the value is
   LC_GLOBAL_LOCALE. (No addition is needed for newlocale() because
   it has such a statement already.)

For each function one statement can cover both cases.
Desired Action At page 743 line 24943 section duplocale, add a new paragraph to
the end of the DESCRIPTION

    The behavior is undefined if the locobj argument is the special
    locale object LC_GLOBAL_LOCALE or is not a valid locale object handle.

At page 921 line 30834 section freelocale, add a new paragraph in
the middle of the DESCRIPTION

    The behavior is undefined if the locobj argument is the special
    locale object LC_GLOBAL_LOCALE or is not a valid locale object handle.

At
page 1135 line 37922 section isalnum
page 1137 line 37965 section isalpha
page 1142 line 38101 section isblank
page 1143 line 38142 section iscntrl
page 1145 line 38185 section isdigit
page 1148 line 38258 section isgraph
page 1156 line 38519 section islower
page 1160 line 38670 section isprint
page 1162 line 38713 section ispunct
page 1164 line 38756 section isspace
page 1167 line 38837 section isupper
page 1169 line 38880 section iswalnum
page 1171 line 38928 section iswalpha
page 1173 line 38976 section iswblank
page 1174 line 39017 section iswcntrl
page 1176 line 39067 section iswctype
page 1178 line 39151 section iswdigit
page 1180 line 39199 section iswgraph
page 1182 line 39247 section iswlower
page 1184 line 39295 section iswprint
page 1186 line 39343 section iswpunct
page 1188 line 39391 section iswspace
page 1190 line 39439 section iswupper
page 1192 line 39487 section iswxdigit
page 1194 line 39535 section isxdigit
page 1991 line 62993 section strcoll
page 1999 line 63255 section strerror
page 2011 line 63682 section strftime
page 2052 line 64952 section strxfrm
page 2126 line 67304 section tolower
page 2127 line 67347 section toupper
page 2129 line 67395 section towctrans
page 2131 line 67445 section towlower
page 2133 line 67494 section towupper
page 2202 line 69368 section wcscoll
page 2242 line 70469 section wcsxfrm
page 2247 line 70621 section wctrans
page 2249 line 70677 section wctype
add a new paragraph to the end of the DESCRIPTION

    [CX]The behavior is undefined if the locale argument to isalnum_l()
    is the special locale object LC_GLOBAL_LOCALE or is not a valid
    locale object handle.[/CX]

(substituting the appropriate function name for isalnum_l).

At page 1364 line 44746 section newlocale, change

    The results are undefined if the base argument is the special
    locale object LC_GLOBAL_LOCALE.

to

    The behavior is undefined if the base argument is the special locale
    object LC_GLOBAL_LOCALE, or is not a valid locale object handle
    and is not (locale_t)0.

At
page 1375 line 45104 section nl_langinfo
page 2004 line 63418 section strfmon
add a new paragraph to the end of the DESCRIPTION

    The behavior is undefined if the locale argument to nl_langinfo_l()
    is the special locale object LC_GLOBAL_LOCALE or is not a valid
    locale object handle.

(substituting the appropriate function name for nl_langinfo_l).

At page 1985 line 62819 section strcasecmp, add a new paragraph to
the end of the DESCRIPTION

    The behavior is undefined if the locale argument to strcasecmp_l()
    or strncasecmp_l() is the special locale object LC_GLOBAL_LOCALE
    or is not a valid locale object handle.

At page 2197 line 69225 section wcscasecmp, add a new paragraph to
the end of the DESCRIPTION

    The behavior is undefined if the locale argument to wcscasecmp_l()
    or wcsncasecmp_l() is the special locale object LC_GLOBAL_LOCALE
    or is not a valid locale object handle.


At
page 743 line 24952 section duplocale
page 1135 line 37928 section isalnum
page 1137 line 37971 section isalpha
page 1142 line 38107 section isblank
page 1143 line 38148 section iscntrl
page 1145 line 38191 section isdigit
page 1148 line 38264 section isgraph
page 1156 line 38525 section islower
page 1160 line 38676 section isprint
page 1162 line 38719 section ispunct
page 1164 line 38762 section isspace
page 1167 line 38843 section isupper
page 1169 line 38886 section iswalnum
page 1171 line 38934 section iswalpha
page 1173 line 38982 section iswblank
page 1174 line 39023 section iswcntrl
page 1176 line 39073 section iswctype
page 1178 line 39157 section iswdigit
page 1180 line 39205 section iswgraph
page 1182 line 39253 section iswlower
page 1184 line 39301 section iswprint
page 1186 line 39349 section iswpunct
page 1188 line 39397 section iswspace
page 1190 line 39445 section iswupper
page 1192 line 39493 section iswxdigit
page 1194 line 39541 section isxdigit
page 1375 line 45112 section nl_langinfo
page 1985 line 62830 section strcasecmp
page 1991 line 63008 section strcoll
page 2000 line 63269 section strerror
page 2004 line 63428 section strfmon
page 2011 line 63690 section strftime
page 2052 line 64964 section strxfrm
page 2126 line 67311 section tolower
page 2127 line 67353 section toupper
page 2129 line 67403 section towctrans
page 2131 line 67452 section towlower
page 2133 line 67501 section towupper
page 2197 line 69237 section wcscasecmp
page 2202 line 69381 section wcscoll
page 2242 line 70481 section wcsxfrm
page 2247 line 70632 section wctrans
page 2249 line 70684 section wctype
delete the locale object "may fail" EINVAL error. If no "may fail"
errors remain, delete the preceding text "The [...] function may fail if:".
If the ERRORS section is now empty, add "None".
Tags tc1-2008
Attached Files

- Relationships
related to 0000334Closedajosey uselocale() error handling 

-  Notes
(0000485)
Don Cragun (manager)
2010-07-29 16:04

Interpretation response
------------------------

The standard does not speak to this issue, and as such no conformance distinction can be made between alternative implementations based on this. This is being referred to the sponsor.

Rationale:
-------------
See Description of this issue above.

Notes to the Editor (not part of this interpretation):
-------------------------------------------------------
Make the changes specified in the Desired Action.
(0000512)
ajosey (manager)
2010-07-30 09:32

Comments/objections on the proposed interpretation are due by 31 Aug 2010

- Issue History
Date Modified Username Field Change
2010-07-15 11:17 geoffclare New Issue
2010-07-15 11:17 geoffclare Status New => Under Review
2010-07-15 11:17 geoffclare Assigned To => ajosey
2010-07-15 11:17 geoffclare Name => Geoff Clare
2010-07-15 11:17 geoffclare Organization => The Open Group
2010-07-15 11:17 geoffclare Section => isalnum
2010-07-15 11:17 geoffclare Page Number => 1135
2010-07-15 11:17 geoffclare Line Number => 37928
2010-07-15 11:17 geoffclare Interp Status => ---
2010-07-29 16:04 Don Cragun Interp Status --- => Pending
2010-07-29 16:04 Don Cragun Note Added: 0000485
2010-07-29 16:04 Don Cragun Status Under Review => Interpretation Required
2010-07-29 16:04 Don Cragun Resolution Open => Accepted
2010-07-29 16:04 Don Cragun Desired Action Updated
2010-07-29 16:05 Don Cragun Final Accepted Text => See Note: 0000485
2010-07-30 09:32 ajosey Interp Status Pending => Proposed
2010-07-30 09:32 ajosey Note Added: 0000512
2010-09-03 06:24 ajosey Interp Status Proposed => Approved
2010-09-16 16:32 Don Cragun Tag Attached: tc1-2008
2010-10-28 15:23 nick Relationship added related to 0000334
2013-04-16 13:06 ajosey Status Interpretation Required => Closed


Mantis 1.1.6[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker