chiark
/
gitweb
/
~mdw
/
mLib
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
@@@ wip
[mLib]
/
codec
/
baseconv.c
diff --git
a/codec/baseconv.c
b/codec/baseconv.c
index b7cb0a0618ebe0a893c2721c336429a9eb8cdb88..53fceb2818eb4039f83ec24659782d5c168da793 100644
(file)
--- a/
codec/baseconv.c
+++ b/
codec/baseconv.c
@@
-364,8
+364,8
@@
static int ctxn##_dodecode(ctxn##_ctx *ctx, \
case PC: \
if (f & CDCF_IGNEQMID) break; \
if (f & CDCF_NOEQPAD) goto badch; \
case PC: \
if (f & CDCF_IGNEQMID) break; \
if (f & CDCF_NOEQPAD) goto badch; \
- if (st == ST_MAIN &&
\
-
!(f & CDCF_IGNZPAD) && (a & ((1 << nb) - 1)))
\
+ if (st == ST_MAIN &&
!(f & CDCF_IGNZPAD) &&
\
+
((nb && !(nb%wd)) || (a & ((1 << nb) - 1))))
\
return (CDCERR_INVZPAD); \
st = ST_PAD; \
if (!(f & CDCF_IGNEQPAD)) { \
return (CDCERR_INVZPAD); \
st = ST_PAD; \
if (!(f & CDCF_IGNEQPAD)) { \
@@
-387,8
+387,8
@@
static int ctxn##_dodecode(ctxn##_ctx *ctx, \
} \
} \
} else { \
} \
} \
} else { \
- if (st == ST_MAIN &&
\
-
!(f & CDCF_IGNZPAD) && (a & ((1 << nb) - 1)))
\
+ if (st == ST_MAIN &&
!(f & CDCF_IGNZPAD) &&
\
+
((nb && !(nb%wd)) || (a & ((1 << nb) - 1))))
\
return (CDCERR_INVZPAD); \
if (!(f & (CDCF_IGNEQPAD | CDCF_IGNEQMID | CDCF_NOEQPAD)) && nb) \
return (CDCERR_INVEQPAD); \
return (CDCERR_INVZPAD); \
if (!(f & (CDCF_IGNEQPAD | CDCF_IGNEQMID | CDCF_NOEQPAD)) && nb) \
return (CDCERR_INVEQPAD); \