summaryrefslogtreecommitdiff
path: root/ncurses/widechar/lib_slk_wset.c
diff options
context:
space:
mode:
Diffstat (limited to 'ncurses/widechar/lib_slk_wset.c')
-rw-r--r--ncurses/widechar/lib_slk_wset.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/ncurses/widechar/lib_slk_wset.c b/ncurses/widechar/lib_slk_wset.c
index 646b5d9..8927556 100644
--- a/ncurses/widechar/lib_slk_wset.c
+++ b/ncurses/widechar/lib_slk_wset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2003-2004,2005 Free Software Foundation, Inc. *
+ * Copyright (c) 2003-2002,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -40,7 +40,7 @@
#include <wctype.h>
#endif
-MODULE_ID("$Id: lib_slk_wset.c,v 1.11 2005/01/16 01:03:53 tom Exp $")
+MODULE_ID("$Id: lib_slk_wset.c,v 1.13 2011/10/22 15:52:20 tom Exp $")
NCURSES_EXPORT(int)
slk_wset(int i, const wchar_t *astr, int format)
@@ -53,19 +53,21 @@ slk_wset(int i, const wchar_t *astr, int format)
T((T_CALLED("slk_wset(%d, %s, %d)"), i, _nc_viswbuf(astr), format));
- init_mb(state);
- str = astr;
- if ((arglen = wcsrtombs(NULL, &str, 0, &state)) != (size_t) -1) {
- if ((mystr = (char *) _nc_doalloc(0, arglen + 1)) != 0) {
- str = astr;
- if (wcsrtombs(mystr, &str, arglen, &state) != (size_t) -1) {
- /* glibc documentation claims that the terminating L'\0'
- * is written, but it is not...
- */
- mystr[arglen] = 0;
- result = slk_set(i, mystr, format);
+ if (astr != 0) {
+ init_mb(state);
+ str = astr;
+ if ((arglen = wcsrtombs(NULL, &str, (size_t) 0, &state)) != (size_t) -1) {
+ if ((mystr = (char *) _nc_doalloc(0, arglen + 1)) != 0) {
+ str = astr;
+ if (wcsrtombs(mystr, &str, arglen, &state) != (size_t) -1) {
+ /* glibc documentation claims that the terminating L'\0'
+ * is written, but it is not...
+ */
+ mystr[arglen] = 0;
+ result = slk_set(i, mystr, format);
+ }
+ free(mystr);
}
- free(mystr);
}
}
returnCode(result);