]> diplodocus.org Git - nmh/blobdiff - sbr/charstring.c
mhlistsbr.c: Replace list_application() with body at call site.
[nmh] / sbr / charstring.c
index d94961aad604f45cce28dc70e8c1b78f9a73ae5c..589b000ec2e5b6df7617985e6afef35c52768f1f 100644 (file)
@@ -1,5 +1,4 @@
-/*
- * charstring -- dynamically-sized char array that can report size
+/* charstring.c -- dynamically-sized char array that can report size
  *               in both characters and bytes
  *
  * This code is Copyright (c) 2014, by the authors of nmh.  See the
  *               in both characters and bytes
  *
  * This code is Copyright (c) 2014, by the authors of nmh.  See the
@@ -42,8 +41,9 @@ charstring_reserve (charstring_t s, size_t need) {
  */
 charstring_t
 charstring_create (size_t max) {
  */
 charstring_t
 charstring_create (size_t max) {
-    charstring_t s = mh_xmalloc (sizeof *s);
+    charstring_t s;
 
 
+    NEW(s);
     s->max = NMH_MAX_CHARWIDTH * (max ? max : CHARSTRING_DEFAULT_SIZE);
     s->cur = s->buffer = mh_xmalloc (s->max);
     s->chars = 0;
     s->max = NMH_MAX_CHARWIDTH * (max ? max : CHARSTRING_DEFAULT_SIZE);
     s->cur = s->buffer = mh_xmalloc (s->max);
     s->chars = 0;
@@ -54,8 +54,9 @@ charstring_create (size_t max) {
 charstring_t
 charstring_copy (const charstring_t src) {
     const size_t num = src->cur - src->buffer;
 charstring_t
 charstring_copy (const charstring_t src) {
     const size_t num = src->cur - src->buffer;
-    charstring_t s = mh_xmalloc (sizeof *s);
+    charstring_t s;
 
 
+    NEW(s);
     s->max = src->max;
     s->buffer = mh_xmalloc (s->max);
     memcpy (s->buffer, src->buffer, num);
     s->max = src->max;
     s->buffer = mh_xmalloc (s->max);
     memcpy (s->buffer, src->buffer, num);
@@ -179,8 +180,8 @@ charstring_last_char_len (const charstring_t s) {
         len = mbtowc (&wide_char, sp, (size_t) MB_CUR_MAX < remaining
                                           ? (size_t) MB_CUR_MAX
                                           : remaining);
         len = mbtowc (&wide_char, sp, (size_t) MB_CUR_MAX < remaining
                                           ? (size_t) MB_CUR_MAX
                                           : remaining);
-        sp += len > 0 ? len : 1;
-        remaining -= len > 0 ? len : 1;
+        sp += max(len, 1);
+        remaining -= max(len, 1);
     }
 #else  /* ! MULTIBYTE_SUPPORT */
     if (charstring_bytes (s) > 0) { len = 1; }
     }
 #else  /* ! MULTIBYTE_SUPPORT */
     if (charstring_bytes (s) > 0) { len = 1; }