diff --git a/src/strcasestr.c b/src/strcasestr.c
index 86c7ec5b0bc02e2519fe3b871d108a89c9514a7a..4ff778bf1495ce60d5f7338ca56dc49af4e8dfcf 100644
--- a/src/strcasestr.c
+++ b/src/strcasestr.c
@@ -23,13 +23,6 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
-#define SWAP( a, b ) \
-(\
-		(a) ^= (b),\
-		(b) ^= (a),\
-		(a) ^= (b)\
-)
-
 static inline int
 trycmp (char **pp, char *cp,
 		const char *q, size_t qn)
@@ -45,8 +38,16 @@ trycmp (char **pp, char *cp,
 static inline void
 swapp (char ***ppap, char ***ppbp, char **cpap, char **cpbp)
 {
-	SWAP(*(intptr_t *)ppap, *(intptr_t *)ppbp);
-	SWAP(*(intptr_t *)cpap, *(intptr_t *)cpbp);
+	char **pp;
+	char  *p;
+
+	pp    = *ppap;
+	*ppap = *ppbp;
+	*ppbp =  pp;
+
+	p     = *cpap;
+	*cpap = *cpbp;
+	*cpbp =   p;
 }
 
 char *