123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /* iksemel (XML parser for Jabber)
- ** Copyright (C) 2000-2004 Gurer Ozen <madcat@e-kolay.net>
- ** This code is free software; you can redistribute it and/or
- ** modify it under the terms of GNU Lesser General Public License.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #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;
- }
|