Browse Source

- len is size_t, but n uses len and is an int. Matching those types

should be good, plus it prevents weird things from happening if
len > INT_MAX.
- Since n is now size_t, compare it against 0 instead of >= 0.
- temp is used to store individual bytes, so use char instead
(matches fp and tp).
- millert noted that the comma operator may not guarantee order of
execution, so replace with semicolons.
Found by lint, OK millert.
OPENBSD_4_4
ray 16 years ago
parent
commit
c94408a321
1 changed files with 12 additions and 6 deletions
  1. +12
    -6
      src/lib/libc/string/swab.c

+ 12
- 6
src/lib/libc/string/swab.c View File

@ -1,4 +1,4 @@
/* $OpenBSD: swab.c,v 1.7 2005/08/08 08:05:37 espie Exp $ */
/* $OpenBSD: swab.c,v 1.8 2008/03/15 21:54:09 ray Exp $ */
/* /*
* Copyright (c) 1988 Regents of the University of California. * Copyright (c) 1988 Regents of the University of California.
* All rights reserved. * All rights reserved.
@ -36,19 +36,25 @@
void void
swab(const void *from, void *to, size_t len) swab(const void *from, void *to, size_t len)
{ {
unsigned long temp;
int n;
size_t n;
char *fp, *tp; char *fp, *tp;
char temp;
n = (len >> 1) + 1;
n = (len / 2) + 1;
fp = (char *)from; fp = (char *)from;
tp = (char *)to; tp = (char *)to;
#define STEP temp = *fp++,*tp++ = *fp++,*tp++ = temp
#define STEP do { \
temp = *fp++; \
*tp++ = *fp++; \
*tp++ = temp; \
} while (0)
/* round to multiple of 8 */ /* round to multiple of 8 */
while ((--n) & 07) while ((--n) & 07)
STEP; STEP;
n >>= 3; n >>= 3;
while (--n >= 0) {
if (n == 0)
return;
while (n-- != 0) {
STEP; STEP; STEP; STEP; STEP; STEP; STEP; STEP;
STEP; STEP; STEP; STEP; STEP; STEP; STEP; STEP;
} }


Loading…
Cancel
Save