fix astmm on sparc or any other architecture that doesn't allow unaligned
authorRussell Bryant <russell@russellbryant.com>
Mon, 20 Mar 2006 02:00:30 +0000 (02:00 +0000)
committerRussell Bryant <russell@russellbryant.com>
Mon, 20 Mar 2006 02:00:30 +0000 (02:00 +0000)
memory access

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@13631 65c4cc65-6c06-0410-ace0-fbb531ad65f3

astmm.c

diff --git a/astmm.c b/astmm.c
index c3b26a3..3647a79 100644 (file)
--- a/astmm.c
+++ b/astmm.c
@@ -38,6 +38,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/options.h"
 #include "asterisk/lock.h"
 #include "asterisk/strings.h"
+#include "asterisk/unaligned.h"
 
 #define SOME_PRIME 563
 
@@ -104,7 +105,7 @@ static inline void *__ast_alloc_region(size_t size, const enum func_type which,
                regions[hash] = reg;
                reg->fence = FENCE_MAGIC;
                fence = (ptr + reg->len);
-               *fence = FENCE_MAGIC;
+               put_unaligned_uint32(fence, FENCE_MAGIC);
        }
        ast_mutex_unlock(&reglock);
        if (!reg) {
@@ -166,7 +167,7 @@ static void __ast_free_region(void *ptr, const char *file, int lineno, const cha
                                fflush(mmlog);
                        }
                }
-               if (*fence != FENCE_MAGIC) {
+               if (get_unaligned_uint32(fence) != FENCE_MAGIC) {
                        fprintf(stderr, "WARNING: High fence violation at %p, in %s of %s, line %d\n", reg->data, reg->func, reg->file, reg->lineno);
                        if (mmlog) {
                                fprintf(mmlog, "%ld - WARNING: High fence violation at %p, in %s of %s, line %d\n", time(NULL), reg->data, reg->func, reg->file, reg->lineno);
@@ -316,7 +317,7 @@ static int handle_show_memory(int fd, int argc, char *argv[])
                                                fflush(mmlog);
                                        }
                                }
-                               if (*fence != FENCE_MAGIC) {
+                               if (get_unaligned_uint32(fence) != FENCE_MAGIC) {
                                        fprintf(stderr, "WARNING: High fence violation at %p, in %s of %s, line %d\n", reg->data, reg->func, reg->file, reg->lineno);
                                        if (mmlog) {
                                                fprintf(mmlog, "%ld - WARNING: High fence violation at %p, in %s of %s, line %d\n", time(NULL), reg->data, reg->func, reg->file, reg->lineno);