/* iksemel (XML parser for Jabber) ** Copyright (C) 2000-2004 Gurer Ozen ** This code is free software; you can redistribute it and/or ** modify it under the terms of GNU Lesser General Public License. */ #include #include #include #include "iksemel.h" struct align_test { char a; double b; }; #define DEFAULT_ALIGNMENT ((size_t) ((char *) &((struct align_test *) 0)->b - (char *) 0)) #define ALIGN_MASK ( DEFAULT_ALIGNMENT - 1 ) const char buf[] = "1234567890abcdefghijklmnopqrstuv"; void test_stack (int cs) { ikstack *s; char *mem, *old; int i; s = iks_stack_new (cs, cs); old = NULL; for (i = 0; i < strlen (buf); i++) { iks_stack_strdup (s, buf, i); mem = iks_stack_alloc (s, i); if (((unsigned long) mem) & ALIGN_MASK) { printf ("ikstack bug, addr %p should be a multiply of %d\n", mem, DEFAULT_ALIGNMENT); exit (1); } memset (mem, 'x', i); old = iks_stack_strcat (s, old, 0, buf + i, 1); } if (old && strcmp (old, buf) != 0) { printf ("ikstack strcat bug:\nExpected: %s\n Result: %s\n", buf, old); exit (1); } iks_stack_delete (&s); } int main (int argc, char *argv[]) { test_stack (0); test_stack (16); test_stack (237); test_stack (1024); return 0; }