diff Python/mactoolboxglue.c @ 37798:81bf4d378b9e legacy-trunk

This patches fixes a number of byteorder problems in MacOSX specific code.
author Ronald Oussoren <ronaldoussoren@mac.com>
date Mon, 17 Apr 2006 13:40:08 +0000
parents 7fdc639bc5b4
children f50b9da5e361
line wrap: on
line diff
--- a/Python/mactoolboxglue.c	Mon Apr 17 13:37:15 2006 +0000
+++ b/Python/mactoolboxglue.c	Mon Apr 17 13:40:08 2006 +0000
@@ -25,6 +25,7 @@
 
 #include "Python.h"
 #include "pymactoolbox.h"
+#include <arpa/inet.h>	/* for ntohl, htonl */
 
 
 /* Like strerror() but for Mac OS error numbers */
@@ -156,12 +157,14 @@
 int
 PyMac_GetOSType(PyObject *v, OSType *pr)
 {
+	uint32_t tmp;
 	if (!PyString_Check(v) || PyString_Size(v) != 4) {
 		PyErr_SetString(PyExc_TypeError,
 			"OSType arg must be string of 4 chars");
 		return 0;
 	}
-	memcpy((char *)pr, PyString_AsString(v), 4);
+	memcpy((char *)&tmp, PyString_AsString(v), 4);
+	*pr = (OSType)ntohl(tmp);
 	return 1;
 }
 
@@ -169,7 +172,8 @@
 PyObject *
 PyMac_BuildOSType(OSType t)
 {
-	return PyString_FromStringAndSize((char *)&t, 4);
+	uint32_t tmp = htonl((uint32_t)t);
+	return PyString_FromStringAndSize((char *)&tmp, 4);
 }
 
 /* Convert an NumVersion value to a 4-element tuple */