diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2016-09-15 23:02:10 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2016-09-15 23:02:10 +0000 |
commit | a281920f9c8353be9c15bbbe556e3417a83c56fb (patch) | |
tree | 02926ba0b82b7cd90e2de84537be0b91c30d3c72 /Build/source/texk/chktex/chktex-src/Utility.c | |
parent | 1f21fda4113ec399917b4848eb29e32e89db9659 (diff) |
ChkTeX 1.7.6
git-svn-id: svn://tug.org/texlive/trunk@42080 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/chktex/chktex-src/Utility.c')
-rw-r--r-- | Build/source/texk/chktex/chktex-src/Utility.c | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/Build/source/texk/chktex/chktex-src/Utility.c b/Build/source/texk/chktex/chktex-src/Utility.c index 0f7c6c073df..6f05e98f617 100644 --- a/Build/source/texk/chktex/chktex-src/Utility.c +++ b/Build/source/texk/chktex/chktex-src/Utility.c @@ -727,6 +727,7 @@ char *FGetsStk(char *Dest, unsigned long len, struct Stack *stack) static short HasSeenLong = 0; struct FileNode *fn; char *Retval = NULL; + size_t Retlen = 0; if ((fn = StkTop(stack))) { @@ -734,12 +735,14 @@ char *FGetsStk(char *Dest, unsigned long len, struct Stack *stack) { Retval = fgets(Dest, (int)len, fn->fh); if (Retval) { - if (Retval[strlen(Retval)-1] == '\n') + Retlen = strlen(Retval); + + if (Retval[Retlen-1] == '\n' || Retlen < len-1) fn->Line++; /* We only want the long lines warning once per file */ else if (!HasSeenLong) { - PrintPrgErr(pmLongLines, BUFSIZ); + PrintPrgErr(pmLongLines, len-2); HasSeenLong = 1; } break; @@ -833,15 +836,29 @@ struct ErrInfo *PushErr(const char *Data, const unsigned long Line, { if ((ci->Data = strdup(Data))) { - ci->File = CurStkName(&InputStack); - ci->Line = Line; - ci->ErrLen = ErrLen; - ci->Column = Column; - ci->LineBuf = LineCpy; - ci->Flags = efNone; - - if (StkPush(ci, Stk)) - return (ci); + if ((ci->File = strdup(CurStkName(&InputStack)))) + { + if ((ci->LineBuf = strdup(LineCpy))) + { + ci->Line = Line; + ci->ErrLen = ErrLen; + ci->Column = Column; + ci->Flags = efNone; + + if (StkPush(ci, Stk)) + return (ci); + + free(ci->LineBuf); + } + else + PrintPrgErr(pmStrDupErr); + + free(ci->File); + } + else + PrintPrgErr(pmStrDupErr); + + free(ci->Data); } else PrintPrgErr(pmStrDupErr); @@ -906,6 +923,10 @@ void FreeErrInfo(struct ErrInfo *ei) { if (ei->Data) free(ei->Data); + if (ei->File) + free(ei->File); + if (ei->LineBuf) + free(ei->LineBuf); free(ei); } |