source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* 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).