* mdocml: Make some values "int" that were "size_t".
@ 2011-05-14 18:15 kristaps
2011-05-14 21:35 ` Joerg Sonnenberger
0 siblings, 1 reply; 3+ messages in thread
From: kristaps @ 2011-05-14 18:15 UTC (permalink / raw)
To: source
Log Message:
-----------
Make some values "int" that were "size_t". These are primarily used for
indexing into arrays, so this removes lots of casts from size_t to int.
Modified Files:
--------------
mdocml:
term.c
term.h
Revision Data
-------------
Index: term.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/term.c,v
retrieving revision 1.187
retrieving revision 1.188
diff -Lterm.c -Lterm.c -u -p -r1.187 -r1.188
--- term.c
+++ term.c
@@ -36,7 +36,7 @@
static void spec(struct termp *, const char *, size_t);
static void res(struct termp *, const char *, size_t);
static void bufferc(struct termp *, char);
-static void adjbuf(struct termp *p, size_t);
+static void adjbuf(struct termp *p, int);
static void encode(struct termp *, const char *, size_t);
@@ -155,12 +155,12 @@ term_flushln(struct termp *p)
vis = vend = 0;
i = 0;
- while (i < (int)p->col) {
+ while (i < p->col) {
/*
* Handle literal tab characters: collapse all
* subsequent tabs into a single huge set of spaces.
*/
- while (i < (int)p->col && '\t' == p->buf[i]) {
+ while (i < p->col && '\t' == p->buf[i]) {
vend = (vis / p->tabwidth + 1) * p->tabwidth;
vbl += vend - vis;
vis = vend;
@@ -174,7 +174,7 @@ term_flushln(struct termp *p)
* space is printed according to regular spacing rules).
*/
- for (j = i, jhy = 0; j < (int)p->col; j++) {
+ for (j = i, jhy = 0; j < p->col; j++) {
if ((j && ' ' == p->buf[j]) || '\t' == p->buf[j])
break;
@@ -217,7 +217,7 @@ term_flushln(struct termp *p)
}
/* Write out the [remaining] word. */
- for ( ; i < (int)p->col; i++) {
+ for ( ; i < p->col; i++) {
if (vend > bp && jhy > 0 && i > jhy)
break;
if ('\t' == p->buf[i])
@@ -524,7 +524,7 @@ term_word(struct termp *p, const char *w
static void
-adjbuf(struct termp *p, size_t sz)
+adjbuf(struct termp *p, int sz)
{
if (0 == p->maxcols)
@@ -532,7 +532,8 @@ adjbuf(struct termp *p, size_t sz)
while (sz >= p->maxcols)
p->maxcols <<= 2;
- p->buf = mandoc_realloc(p->buf, sizeof(int) * p->maxcols);
+ p->buf = mandoc_realloc
+ (p->buf, sizeof(int) * (size_t)p->maxcols);
}
@@ -543,7 +544,7 @@ bufferc(struct termp *p, char c)
if (p->col + 1 >= p->maxcols)
adjbuf(p, p->col + 1);
- p->buf[(int)p->col++] = c;
+ p->buf[p->col++] = c;
}
@@ -551,7 +552,10 @@ static void
encode(struct termp *p, const char *word, size_t sz)
{
enum termfont f;
- int i;
+ int i, len;
+
+ /* LINTED */
+ len = sz;
/*
* Encode and buffer a string of characters. If the current
@@ -560,31 +564,31 @@ encode(struct termp *p, const char *word
*/
if (TERMFONT_NONE == (f = term_fonttop(p))) {
- if (p->col + sz >= p->maxcols)
- adjbuf(p, p->col + sz);
- for (i = 0; i < (int)sz; i++)
- p->buf[(int)p->col++] = word[i];
+ if (p->col + len >= p->maxcols)
+ adjbuf(p, p->col + len);
+ for (i = 0; i < len; i++)
+ p->buf[p->col++] = word[i];
return;
}
/* Pre-buffer, assuming worst-case. */
- if (p->col + 1 + (sz * 3) >= p->maxcols)
- adjbuf(p, p->col + 1 + (sz * 3));
+ if (p->col + 1 + (len * 3) >= p->maxcols)
+ adjbuf(p, p->col + 1 + (len * 3));
- for (i = 0; i < (int)sz; i++) {
- if ( ! isgraph((u_char)word[i])) {
- p->buf[(int)p->col++] = word[i];
+ for (i = 0; i < len; i++) {
+ if ( ! isgraph((unsigned char)word[i])) {
+ p->buf[p->col++] = word[i];
continue;
}
if (TERMFONT_UNDER == f)
- p->buf[(int)p->col++] = '_';
+ p->buf[p->col++] = '_';
else
- p->buf[(int)p->col++] = word[i];
+ p->buf[p->col++] = word[i];
- p->buf[(int)p->col++] = 8;
- p->buf[(int)p->col++] = word[i];
+ p->buf[p->col++] = 8;
+ p->buf[p->col++] = word[i];
}
}
Index: term.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/term.h,v
retrieving revision 1.81
retrieving revision 1.82
diff -Lterm.h -Lterm.h -u -p -r1.81 -r1.82
--- term.h
+++ term.h
@@ -82,10 +82,10 @@ struct termp {
size_t defrmargin; /* Right margin of the device. */
size_t rmargin; /* Current right margin. */
size_t maxrmargin; /* Max right margin. */
- size_t maxcols; /* Max size of buf. */
+ int maxcols; /* Max size of buf. */
size_t offset; /* Margin offest. */
size_t tabwidth; /* Distance of tab positions. */
- size_t col; /* Bytes in buf. */
+ int col; /* Bytes in buf. */
size_t viscol; /* Chars on current line. */
int overstep; /* See termp_flushln(). */
int flags;
--
To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: mdocml: Make some values "int" that were "size_t".
2011-05-14 18:15 mdocml: Make some values "int" that were "size_t" kristaps
@ 2011-05-14 21:35 ` Joerg Sonnenberger
2011-05-14 23:38 ` Kristaps Dzonsons
0 siblings, 1 reply; 3+ messages in thread
From: Joerg Sonnenberger @ 2011-05-14 21:35 UTC (permalink / raw)
To: source
On Sat, May 14, 2011 at 02:15:20PM -0400, kristaps@mdocml.bsd.lv wrote:
> Log Message:
> -----------
> Make some values "int" that were "size_t". These are primarily used for
> indexing into arrays, so this removes lots of casts from size_t to int.
This sounds like going into the completely wrong direction...
Joerg
--
To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: mdocml: Make some values "int" that were "size_t".
2011-05-14 21:35 ` Joerg Sonnenberger
@ 2011-05-14 23:38 ` Kristaps Dzonsons
0 siblings, 0 replies; 3+ messages in thread
From: Kristaps Dzonsons @ 2011-05-14 23:38 UTC (permalink / raw)
To: source
> This sounds like going into the completely wrong direction...
That may be, but I'd rather have things as int from the start than cast
to int in array indices, which may hide errors. Furthermore, term.c is
going to get a lot of intention in migrating to Unicode, and I don't
want to be distracted by casts.
The casting is because lint on OpenBSD complains about indices being
non-int, and the fewer lint errors, the more I can see real errors.
With this new code, I'll be running lint a lot to catch things I don't.
When the shittiness of OpenBSD's lint are resolved, I'll change all this
to the "right" typing (it's a mechanical change for the most part
anyway). Yes, this situation sucks, but it's reality.
--
To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-05-14 23:38 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-14 18:15 mdocml: Make some values "int" that were "size_t" kristaps
2011-05-14 21:35 ` Joerg Sonnenberger
2011-05-14 23:38 ` Kristaps Dzonsons
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).