aboutsummaryrefslogtreecommitdiff
path: root/games/ioquake3
diff options
context:
space:
mode:
authorDmitry Marakasov <amdmi3@FreeBSD.org>2010-01-28 00:32:01 +0000
committerDmitry Marakasov <amdmi3@FreeBSD.org>2010-01-28 00:32:01 +0000
commitd2f22e01f654b14b1926f74ef49b0fa3c6c03933 (patch)
treece89be1eadb02595777ee163743923f9b749c8e7 /games/ioquake3
parent335cc2aba932086206b134e003ce3810aa900e06 (diff)
downloadports-d2f22e01f654b14b1926f74ef49b0fa3c6c03933.tar.gz
ports-d2f22e01f654b14b1926f74ef49b0fa3c6c03933.zip
- Backport a patch to fixes crashes on 64bit systems
PR: 142886 Submitted by: Dominic Fandrey <kamikaze@bsdforen.de> (maintainer)
Notes
Notes: svn path=/head/; revision=248728
Diffstat (limited to 'games/ioquake3')
-rw-r--r--games/ioquake3/Makefile2
-rw-r--r--games/ioquake3/files/patch-code-qcommon-vm_interpreted.c34
-rw-r--r--games/ioquake3/pkg-message7
3 files changed, 37 insertions, 6 deletions
diff --git a/games/ioquake3/Makefile b/games/ioquake3/Makefile
index 25937c453d4a..cf9fdbe68392 100644
--- a/games/ioquake3/Makefile
+++ b/games/ioquake3/Makefile
@@ -7,7 +7,7 @@
PORTNAME?= ioquake3
DISTVERSION?= 1.36
-PORTREVISION?= 2
+PORTREVISION?= 3
CATEGORIES= games
MASTER_SITES?= http://ioquake3.org/files/${DISTVERSION}/
diff --git a/games/ioquake3/files/patch-code-qcommon-vm_interpreted.c b/games/ioquake3/files/patch-code-qcommon-vm_interpreted.c
new file mode 100644
index 000000000000..1e9b6ee4d54b
--- /dev/null
+++ b/games/ioquake3/files/patch-code-qcommon-vm_interpreted.c
@@ -0,0 +1,34 @@
+--- code/qcommon/vm_interpreted.c 2009/11/01 19:58:07 1717
++++ code/qcommon/vm_interpreted.c 2010/01/16 10:55:51 1772
+@@ -516,18 +516,20 @@
+
+ //VM_LogSyscalls( (int *)&image[ programStack + 4 ] );
+ {
+- intptr_t* argptr = (intptr_t *)&image[ programStack + 4 ];
+- #if __WORDSIZE == 64
+- // the vm has ints on the stack, we expect
+- // longs so we have to convert it
+- intptr_t argarr[16];
+- int i;
+- for (i = 0; i < 16; ++i) {
+- argarr[i] = *(int*)&image[ programStack + 4 + 4*i ];
++ // the vm has ints on the stack, we expect
++ // pointers so we might have to convert it
++ if (sizeof(intptr_t) != sizeof(int)) {
++ intptr_t argarr[16];
++ int *imagePtr = (int *)&image[programStack];
++ int i;
++ for (i = 0; i < 16; ++i) {
++ argarr[i] = *(++imagePtr);
++ }
++ r = vm->systemCall( argarr );
++ } else {
++ intptr_t* argptr = (intptr_t *)&image[ programStack + 4 ];
++ r = vm->systemCall( argptr );
+ }
+- argptr = argarr;
+- #endif
+- r = vm->systemCall( argptr );
+ }
+
+ #ifdef DEBUG_VM
diff --git a/games/ioquake3/pkg-message b/games/ioquake3/pkg-message
index 118067a15b44..999553264ee7 100644
--- a/games/ioquake3/pkg-message
+++ b/games/ioquake3/pkg-message
@@ -1,14 +1,11 @@
==============================================================================
-The input devices are now handled by SDL. Some mouse buttons will have
-different aliases and the mouse speed needs to be readjusted.
+Should the game freeze when entering a match, try to change the value of
+com_zoneMegs (e.g. to 48).
The configuration files are saved to ~/.ioquake3 instead of ~/.q3a because
they have additional variables which would be removed if other engines
overwrite them. But you can safely copy the original directory to the new one
for the first time.
-Should you encounter freezes when playing a demo or single player game,
-rebuild without client libraries.
-
==============================================================================