Changes in / [1d3ae66:fb75979] in mainline


Ignore:
Location:
common
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • common/include/str.h

    r1d3ae66 rfb75979  
    4545#include <mem.h>
    4646#include <_bits/decls.h>
     47#include <_bits/mbstate_t.h>
    4748#include <_bits/uchar.h>
    4849
     
    8687
    8788extern char32_t str_decode(const char *str, size_t *offset, size_t sz);
     89extern char32_t str_decode_r(const char *str, size_t *offset, size_t sz,
     90        char32_t replacement, mbstate_t *mbstate);
    8891extern char32_t str_decode_reverse(const char *str, size_t *offset, size_t sz);
    8992extern errno_t chr_encode(char32_t ch, char *str, size_t *offset, size_t sz);
  • common/str.c

    r1d3ae66 rfb75979  
    427427        char32_t ch = _str_decode(str, offset, size, &mb);
    428428
    429         if (ch == CHAR_INVALID)
     429        if (ch == CHAR_INVALID || mb.state)
    430430                return U_SPECIAL;
    431431
    432         if (mb.state)
    433                 return U_SPECIAL;
    434 
    435432        return ch;
     433}
     434
     435char32_t str_decode_r(const char *str, size_t *offset, size_t size,
     436        char32_t replacement, mbstate_t *mb)
     437{
     438        char32_t ch = _str_decode(str, offset, size, mb);
     439        return (ch == CHAR_INVALID) ? replacement : ch;
    436440}
    437441
Note: See TracChangeset for help on using the changeset viewer.