]> git.draconx.ca Git - cdecl99.git/blobdiff - src/error.c
libcdecl: Actually test threading support.
[cdecl99.git] / src / error.c
index 758f58e63c50d4159195b08189c10cd6467e06c2..94987af6a90f3a7eb83ce661a4d87b3c75efb7a8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Error handling for libcdecl.
- *  Copyright © 2011-2012, 2021, 2023 Nick Bowler
+ *  Copyright © 2011-2012, 2021, 2023-2024 Nick Bowler
  *
  *  This program is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -167,7 +167,7 @@ fmt_err(struct err_state *state, const char *fmt, const char *arg)
  * Sets the library error to code; fmt is a printf-style string that may use
  * up to one %s directive, to refer to arg.
  */
-void cdecl__err(unsigned code, const char *fmt, const char *arg)
+void cdecl__err(const char *fmt, const char *arg)
 {
        struct err_state *state;
        unsigned try = 0;
@@ -180,7 +180,7 @@ void cdecl__err(unsigned code, const char *fmt, const char *arg)
 retry:
        rc = fmt_err(state, fmt, arg);
        if (rc >= state->nstr) {
-               assert(try++ == 0 && rc < SIZE_MAX / 4);
+               assert(try++ == 0 && rc < (size_t)-1 / 4);
 
                state = alloc_err_state(state, (size_t)(rc+1u) * 3 / 2);
                if (!state)
@@ -189,8 +189,8 @@ retry:
                goto retry;
        }
 
+       state->err.code = CDECL_ENOPARSE;
        state->err.str = state->str;
-       state->err.code = code;
 }
 
 const struct cdecl_error *cdecl_get_error(void)