From eb8aee3f45024fa1e631ac2da5b06f5a9abf16d3 Mon Sep 17 00:00:00 2001 Message-Id: From: Panu Matilainen Date: Tue, 27 Apr 2021 10:51:14 +0300 Subject: [PATCH] Revert "Fix logic error in macro file reader" This trips over the following comment line in macros.python-srpm, preventing all subsequent macros from loading: Temporarily revert to let Python builds continue while looking for proper fix. This reverts commit 75275a87cff04da65d3557f2c40ea2b526528c4c. --- rpmio/macro.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/rpmio/macro.c b/rpmio/macro.c index 6dfc73336..f2a2335df 100644 --- a/rpmio/macro.c +++ b/rpmio/macro.c @@ -209,24 +209,24 @@ findEntry(rpmMacroContext mc, const char *name, size_t namelen, size_t *pos) static int rdcl(char * buf, size_t size, FILE *f) { + char *q = buf - 1; /* initialize just before buffer. */ size_t nb = 0; + size_t nread = 0; int pc = 0, bc = 0, xc = 0; int nlines = 0; char *p = buf; - char *q = buf; if (f != NULL) do { - *q = '\0'; /* terminate */ + *(++q) = '\0'; /* terminate and move forward. */ if (fgets(q, size, f) == NULL) /* read next line. */ break; nlines++; nb = strlen(q); - for (q += nb; nb > 0 && iseol(q[-1]); q--) + nread += nb; /* trim trailing \r and \n */ + for (q += nb - 1; nb > 0 && iseol(*q); q--) nb--; - if (*q == 0) - break; /* no newline found, EOF */ - for (; p < q; p++) { + for (; p <= q; p++) { switch (*p) { case '\\': switch (*(p+1)) { @@ -250,14 +250,14 @@ rdcl(char * buf, size_t size, FILE *f) case ']': if (xc > 0) xc--; break; } } - if ((nb == 0 || q[-1] != '\\') && !bc && !pc && !xc) { - *q = '\0'; /* trim trailing \r, \n */ + if (nb == 0 || (*q != '\\' && !bc && !pc && !xc) || *(q+1) == '\0') { + *(++q) = '\0'; /* trim trailing \r, \n */ break; } q++; nb++; /* copy newline too */ size -= nb; - if (q[-1] == '\r') /* XXX avoid \r madness */ - q[-1] = '\n'; + if (*q == '\r') /* XXX avoid \r madness */ + *q = '\n'; } while (size > 0); return nlines; } -- 2.30.2