Tcl Source Code

Ticket Change Details
Login
Overview

Artifact ID: 5c86fb3dd144ed5f021060a39b916733f323440a
Ticket: 418035470b1306a17cff21dbb78dedfeee3d17f4
tcl.h: #if TCL_UTF_MAX > 4
User & Date: pointsman 2013-12-22 23:12:32
Changes

  1. assignee changed to: "nobody"
  2. closer changed to: "nobody"
  3. cmimetype changed to: "text/plain"
  4. comment changed to:
    tcl.h has:
    
    #if TCL_UTF_MAX > 4
        /*
         * unsigned int isn't 100% accurate as it should be a strict 4-byte value
         * (perhaps wchar_t). 64-bit systems may have troubles. The size of this
         * value must be reflected correctly in regcustom.h and
         * in tclEncoding.c.
         * XXX: Tcl is currently UCS-2 and planning UTF-16 for the Unicode
         * XXX: string rep that Tcl_UniChar represents.  Changing the size
         * XXX: of Tcl_UniChar is /not/ supported.
         */
    typedef unsigned int Tcl_UniChar;
    #else
    typedef unsigned short Tcl_UniChar;
    #endif
    
    (See in context here: http://core.tcl.tk/tcl/artifact/f555d5aa61ea46ec31d833b33c52fb8788c8dcdf?ln=2208-2221)
    
    That means, with TCL_UTF_MAX 4 Tcl_UniChar is still an unsigned short. This is obviously wrong, because a valid 4 byte utf-8 char is beyond the BMP, that means bigger than an unsigned short.
    
    That define should read as 
    
    #if TCL_UTF_MAX > 3
    
    as before check-in http://core.tcl.tk/tcl/info/4d6af4f7a468b71a
    
    Same in regcustom.h: http://core.tcl.tk/tcl/artifact/197b7849d4dfcb86b50f783fdc0fc45dde12125b?ln=100-108
    
  5. foundin changed to: "8.6.1"
  6. is_private changed to: "0"
  7. login: "pointsman"
  8. priority changed to: "5 Medium"
  9. private_contact changed to: "4ca203a8e925aecdd9419645f936bccf18cd6ea7"
  10. resolution changed to: "None"
  11. severity changed to: "Minor"
  12. status changed to: "Open"
  13. submitter changed to: "pointsman"
  14. subsystem changed to: "44. UTF-8 Strings"
  15. title changed to: "tcl.h: #if TCL_UTF_MAX > 4"
  16. type changed to: "Bug"