[launchd-changes] [23153] trunk/launchd/src/liblaunch.c

source_changes at macosforge.org source_changes at macosforge.org
Mon Mar 19 10:49:44 PDT 2007


Revision: 23153
          http://trac.macosforge.org/projects/launchd/changeset/23153
Author:   zarzycki at apple.com
Date:     2007-03-19 10:49:43 -0700 (Mon, 19 Mar 2007)

Log Message:
-----------
Unaligned access can slow down the machine.

Modified Paths:
--------------
    trunk/launchd/src/liblaunch.c

Modified: trunk/launchd/src/liblaunch.c
===================================================================
--- trunk/launchd/src/liblaunch.c	2007-03-16 14:24:14 UTC (rev 23152)
+++ trunk/launchd/src/liblaunch.c	2007-03-19 17:49:43 UTC (rev 23153)
@@ -574,6 +574,8 @@
 	free(lh);
 }
 
+#define ROUND_TO_64BIT_WORD_SIZE(x)	((x + 7) & ~7)
+
 void
 launch_data_pack(launch_data_t d, void **where, size_t *len, int **fd_where, size_t *fdcnt)
 {
@@ -613,13 +615,13 @@
 		o_in_w->string_len = host2big(d->string_len);
 		*where = realloc(*where, *len + strlen(d->string) + 1);
 		memcpy(*where + *len, d->string, strlen(d->string) + 1);
-		*len += strlen(d->string) + 1;
+		*len += ROUND_TO_64BIT_WORD_SIZE(strlen(d->string) + 1);
 		break;
 	case LAUNCH_DATA_OPAQUE:
 		o_in_w->opaque_size = host2big(d->opaque_size);
 		*where = realloc(*where, *len + d->opaque_size);
 		memcpy(*where + *len, d->opaque, d->opaque_size);
-		*len += d->opaque_size;
+		*len += ROUND_TO_64BIT_WORD_SIZE(d->opaque_size);
 		break;
 	case LAUNCH_DATA_DICTIONARY:
 	case LAUNCH_DATA_ARRAY:
@@ -671,7 +673,7 @@
 		}
 		r->string = conn->recvbuf + *data_offset;
 		r->string_len = tmpcnt;
-		*data_offset += tmpcnt + 1;
+		*data_offset += ROUND_TO_64BIT_WORD_SIZE(tmpcnt + 1);
 		break;
 	case LAUNCH_DATA_OPAQUE:
 		tmpcnt = big2host(r->opaque_size);
@@ -681,7 +683,7 @@
 		}
 		r->opaque = conn->recvbuf + *data_offset;
 		r->opaque_size = tmpcnt;
-		*data_offset += tmpcnt;
+		*data_offset += ROUND_TO_64BIT_WORD_SIZE(tmpcnt);
 		break;
 	case LAUNCH_DATA_FD:
 		if (r->fd != -1) {

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070319/905a31d3/attachment.html


More information about the launchd-changes mailing list