source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Remove needless and harmful byte swapping on big endian
@ 2014-11-14  4:24 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2014-11-14  4:24 UTC (permalink / raw)
  To: source

Log Message:
-----------
Remove needless and harmful byte swapping on big endian architectures.
Problem found and patch provided by Martin Natano at bitrig, thanks!
Tested on macppc by natano@ and on i386, amd64, and sparc64 myself.

While here, sync with OpenBSD by removing some trailing whitespace.

Modified Files:
--------------
    mdocml:
        preconv.c

Revision Data
-------------
Index: preconv.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/preconv.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -Lpreconv.c -Lpreconv.c -u -p -r1.11 -r1.12
--- preconv.c
+++ preconv.c
@@ -29,8 +29,7 @@ preconv_encode(struct buf *ib, size_t *i
     int *filenc)
 {
 	size_t		 i;
-	const long	 one = 1L;
-	int		 state, be;
+	int		 state;
 	unsigned int	 accum;
 	unsigned char	 cu;
 
@@ -39,12 +38,6 @@ preconv_encode(struct buf *ib, size_t *i
 
 	state = 0;
 	accum = 0U;
-	be = 0;
-
-	/* Quick test for big-endian value. */
-
-	if ( ! (*((const char *)(&one))))
-		be = 1;
 
 	for (i = *ii; i < ib->sz; i++) {
 		cu = ib->buf[i];
@@ -66,19 +59,6 @@ preconv_encode(struct buf *ib, size_t *i
 			if (state)
 				continue;
 
-			/*
-			 * Accum is held in little-endian order as
-			 * stipulated by the UTF-8 sequence coding.  We
-			 * need to convert to a native big-endian if our
-			 * architecture requires it.
-			 */
-
-			if (be)
-				accum = (accum >> 24) | 
-					((accum << 8) & 0x00FF0000) |
-					((accum >> 8) & 0x0000FF00) |
-					(accum << 24);
-
 			if (accum < 0x80)
 				ob->buf[(*oi)++] = accum;
 			else
@@ -93,7 +73,7 @@ preconv_encode(struct buf *ib, size_t *i
 			 * UTF-8 bitmask, calculate the expected UTF-8
 			 * state from it.
 			 */
-			for (state = 0; state < 7; state++) 
+			for (state = 0; state < 7; state++)
 				if ( ! (cu & (1 << (7 - state))))
 					break;
 
@@ -158,7 +138,7 @@ preconv_cue(const struct buf *b, size_t 
 
 	/* Check if we have the correct header/trailer. */
 
-	if ((sz = (size_t)(eoln - ln)) < 10 || 
+	if ((sz = (size_t)(eoln - ln)) < 10 ||
 	    memcmp(ln, ".\\\" -*-", 7) || memcmp(eoln - 3, "-*-", 3))
 		return(MPARSE_UTF8 | MPARSE_LATIN1);
 
@@ -189,7 +169,7 @@ preconv_cue(const struct buf *b, size_t 
 			sz -= phsz;
 			ln += phsz;
 			continue;
-		} 
+		}
 
 		sz -= 7;
 		ln += 7;
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-11-14  4:24 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-14  4:24 mdocml: Remove needless and harmful byte swapping on big endian schwarze

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).