From 166c9ed9a2c4021159e9d7dc54cc8b5e78fb09b9 Mon Sep 17 00:00:00 2001 From: verhaegs Date: Sat, 28 Jul 2012 21:13:19 +0000 Subject: [PATCH] test/library: Added test case for using twice peropener.library from same task. This let AROS crash ATM due to changes in r45230 git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@45353 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- test/library/empty.c | 1 - test/library/mmakefile.src | 5 +++-- test/library/peropener.conf | 9 ++++++++- test/library/peropenerbase.h | 9 +++++++++ test/library/peropenertest.c | 21 +++++++++++++++++++++ test/library/peropenervalue.c | 16 ++++++++++++++++ 6 files changed, 57 insertions(+), 4 deletions(-) delete mode 100644 test/library/empty.c create mode 100644 test/library/peropenerbase.h create mode 100644 test/library/peropenervalue.c diff --git a/test/library/empty.c b/test/library/empty.c deleted file mode 100644 index 651a05f61e..0000000000 --- a/test/library/empty.c +++ /dev/null @@ -1 +0,0 @@ -/* blank file */ diff --git a/test/library/mmakefile.src b/test/library/mmakefile.src index b2292dc782..15f4e40699 100644 --- a/test/library/mmakefile.src +++ b/test/library/mmakefile.src @@ -28,7 +28,8 @@ USER_CFLAGS := -I$(TARGETDIR)/Development/include USER_LDFLAGS := -L$(TARGETDIR)/Development/lib %build_prog mmake=test-library-peropenertest \ - progname=peropenertest targetdir=$(TARGETDIR) + progname=peropenertest targetdir=$(TARGETDIR) \ + uselibs=peropener %build_prog mmake=test-library-peropenertest_child \ progname=peropenertest_child targetdir=$(TARGETDIR) \ @@ -49,7 +50,7 @@ USER_LDFLAGS := -L$(TARGETDIR)/Development/lib modname=dummy modtype=library files=dummylib prefix=$(TARGETDIR) %build_module mmake=test-library-peropenerlib \ - modname=peropener modtype=library files=empty prefix=$(TARGETDIR) + modname=peropener modtype=library files=peropenervalue prefix=$(TARGETDIR) %build_module mmake=test-library-pertasklib \ modname=pertask modtype=library \ diff --git a/test/library/peropener.conf b/test/library/peropener.conf index 29607082c8..3d02755160 100644 --- a/test/library/peropener.conf +++ b/test/library/peropener.conf @@ -1,7 +1,14 @@ ##begin config -version 1.0 +version 1.1 +libbasetype struct PeropenerBase options peropenerbase ##end config +##begin cdefprivate +#include "peropenerbase.h" +##end cdefprivate + ##begin functionlist +void PeropenerSetValue(int) +int PeropenerGetValue(void) ##end functionlist diff --git a/test/library/peropenerbase.h b/test/library/peropenerbase.h new file mode 100644 index 0000000000..5409179b1c --- /dev/null +++ b/test/library/peropenerbase.h @@ -0,0 +1,9 @@ +#include + +struct PeropenerBase +{ + struct Library lib; + int value; +}; + +APTR __GM_GetBase(); diff --git a/test/library/peropenertest.c b/test/library/peropenertest.c index d6ad233581..fb4d8274e1 100644 --- a/test/library/peropenertest.c +++ b/test/library/peropenertest.c @@ -8,6 +8,8 @@ #include #include +struct Library *PeropenerBase = NULL; + int main (int argc, char ** argv) { struct Library *base1, *base2; @@ -18,6 +20,25 @@ int main (int argc, char ** argv) base1=OpenLibrary((STRPTR)"peropener.library",0); base2=OpenLibrary((STRPTR)"peropener.library",0); + /* Set value for base1 */ + PeropenerBase = base1; + PeropenerSetValue(1); + + /* Set value for base2 */ + PeropenerBase = base2; + PeropenerSetValue(2); + + /* Check value for base2 */ + Printf((STRPTR)"Checking value for base2: %s\n", + (PeropenerGetValue() == 2) ? "OK" : "FAIL!" + ); + + /* Check value for base2 */ + PeropenerBase = base1; + Printf((STRPTR)"Checking value for base1: %s\n", + (PeropenerGetValue() == 1) ? "OK" : "FAIL!" + ); + FPrintf(Output(), (STRPTR)"base1=%lx, base2=%lx\n", base1, base2); if (base1 != NULL) diff --git a/test/library/peropenervalue.c b/test/library/peropenervalue.c new file mode 100644 index 0000000000..5fe4f0d171 --- /dev/null +++ b/test/library/peropenervalue.c @@ -0,0 +1,16 @@ +#include "peropenerbase.h" + +void PeropenerSetValue(int value) +{ + struct PeropenerBase *PeropenerBase = __GM_GetBase(); + + PeropenerBase->value = value; +} + + +int PeropenerGetValue(void) +{ + struct PeropenerBase *PeropenerBase = __GM_GetBase(); + + return PeropenerBase->value; +} -- 2.11.4.GIT