- changed status to resolved
citrus_none's stdenc::mbtowc() multiple bugs.
Issue #55
closed
stdenc::mbtowc is similar to ctype::mbrtowc, except:
- updates string pointer to next of converted byte(same as mbrtowc_priv).
- return zero if null terminate(=L'\0') has been convert.
but:
- citrus_none.c doesn't update result string pointer correctly.
- retuen one if null terminate (=L'\0') has been converted.
following sample code may fail.
#include <assert.h>
#include <limits.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
#include "citrus_namespace.h"
#include "citrus_types.h"
#include "citrus_module.h"
#include "citrus_ctype.h"
#include "citrus_ctype_local.h"
#include "citrus_stdenc.h"
#include "citrus_stdenc_local.h"
#include "citrus_none.h"
extern struct _citrus_stdenc _citrus_stdenc_default;
int
main(void)
{
struct _citrus_stdenc *ce = &_citrus_stdenc_default;
char st[sizeof(mbstate_t)];
size_t ret, n;
_citrus_wc_t wc;
const char *s = "", *t;
t = s;
(*ce->ce_ops->eo_init_state)(ce, &st);
ret = (*ce->ce_ops->eo_mbtowc)(ce,
&wc, &t, 1, (void *)&st, &n);
assert(ret == 0);
assert(t == s + 1);
}
Comments (2)
-
reporter -
reporter - changed status to closed
- Log in to comment
BUGFIX: Issue
#55-- citrus_none's stdenc::mbtowc() multiple bugs.→ <<cset 1f53329234c4>>