aboutsummaryrefslogtreecommitdiffstats
path: root/games
diff options
context:
space:
mode:
authoramdmi3 <amdmi3@FreeBSD.org>2016-06-24 06:11:21 +0800
committeramdmi3 <amdmi3@FreeBSD.org>2016-06-24 06:11:21 +0800
commit885879dfa709fbf4c8d2f761515970f323ea5d87 (patch)
tree74dc57ef6cafa536e739ac45bd7d18e4a1443b12 /games
parentca56b7cd35e44111d29d265db33372440009244d (diff)
downloadfreebsd-ports-gnome-885879dfa709fbf4c8d2f761515970f323ea5d87.tar.gz
freebsd-ports-gnome-885879dfa709fbf4c8d2f761515970f323ea5d87.tar.zst
freebsd-ports-gnome-885879dfa709fbf4c8d2f761515970f323ea5d87.zip
- Update to 1.4.1
Diffstat (limited to 'games')
-rw-r--r--games/dhewm3/Makefile3
-rw-r--r--games/dhewm3/distinfo5
-rw-r--r--games/dhewm3/files/patch-roe-bfh-crash52
-rw-r--r--games/dhewm3/files/patch-roe-last-level-load-crash51
4 files changed, 4 insertions, 107 deletions
diff --git a/games/dhewm3/Makefile b/games/dhewm3/Makefile
index d9f96ce5f68d..15e54f25b61f 100644
--- a/games/dhewm3/Makefile
+++ b/games/dhewm3/Makefile
@@ -2,8 +2,7 @@
# $FreeBSD$
PORTNAME= dhewm3
-PORTVERSION= 1.4.0
-PORTREVISION= 1
+PORTVERSION= 1.4.1
CATEGORIES= games
MAINTAINER= amdmi3@FreeBSD.org
diff --git a/games/dhewm3/distinfo b/games/dhewm3/distinfo
index 9ca51f3e96e9..335c9f1ee91f 100644
--- a/games/dhewm3/distinfo
+++ b/games/dhewm3/distinfo
@@ -1,2 +1,3 @@
-SHA256 (dhewm-dhewm3-1.4.0_GH0.tar.gz) = b579cd2d07d4efc0ebb536c933857ee28a302d9e9484ebd5bda9b40f8da17f88
-SIZE (dhewm-dhewm3-1.4.0_GH0.tar.gz) = 5311334
+TIMESTAMP = 1466426532
+SHA256 (dhewm-dhewm3-1.4.1_GH0.tar.gz) = 587586142d863ff98051619f0d49c056c5302e919c655a50af69a8293bc3ae08
+SIZE (dhewm-dhewm3-1.4.1_GH0.tar.gz) = 5312533
diff --git a/games/dhewm3/files/patch-roe-bfh-crash b/games/dhewm3/files/patch-roe-bfh-crash
deleted file mode 100644
index 3ce45b793d06..000000000000
--- a/games/dhewm3/files/patch-roe-bfh-crash
+++ /dev/null
@@ -1,52 +0,0 @@
-commit b03fc9271aa5c4aaf4e90a940c78d004e2962148
-Author: Daniel Gibson <metalcaedes@gmail.com>
-Date: Sun Dec 13 03:06:52 2015 +0100
-
- Fix crash by assert in last RoE level (and maybe elsewhere)
-
- The assertion in idBounds::operator-(const idBounds&) was triggered
- from idWeapon::Event_LaunchProjectiles() (ownerBounds - projBounds)
- It only happened when using the BFG.
- So I added a check to make sure calling operator- is legal.
-
- I guess this also caused #122
-
-diff --git neo/d3xp/Weapon.cpp neo/d3xp/Weapon.cpp
-index 2101381..30f8882 100644
---- d3xp/Weapon.cpp
-+++ d3xp/Weapon.cpp
-@@ -3446,7 +3446,14 @@ void idWeapon::Event_LaunchProjectiles( int num_projectiles, float spread, float
- // make sure the projectile starts inside the bounding box of the owner
- if ( i == 0 ) {
- muzzle_pos = muzzleOrigin + playerViewAxis[ 0 ] * 2.0f;
-- if ( ( ownerBounds - projBounds).RayIntersection( muzzle_pos, playerViewAxis[0], distance ) ) {
-+
-+ // DG: sometimes the assertion in idBounds::operator-(const idBounds&) triggers
-+ // (would get bounding box with negative volume)
-+ // => check that before doing ownerBounds - projBounds (equivalent to the check in the assertion)
-+ idVec3 obDiff = ownerBounds[1] - ownerBounds[0];
-+ idVec3 pbDiff = projBounds[1] - projBounds[0];
-+ bool boundsSubLegal = obDiff.x > pbDiff.x && obDiff.y > pbDiff.y && obDiff.z > pbDiff.z;
-+ if ( boundsSubLegal && ( ownerBounds - projBounds ).RayIntersection( muzzle_pos, playerViewAxis[0], distance ) ) {
- start = muzzle_pos + distance * playerViewAxis[0];
- } else {
- start = ownerBounds.GetCenter();
-diff --git neo/game/Weapon.cpp neo/game/Weapon.cpp
-index d889c68..a381ae2 100644
---- game/Weapon.cpp
-+++ game/Weapon.cpp
-@@ -2941,7 +2941,13 @@ void idWeapon::Event_LaunchProjectiles( int num_projectiles, float spread, float
- // make sure the projectile starts inside the bounding box of the owner
- if ( i == 0 ) {
- muzzle_pos = muzzleOrigin + playerViewAxis[ 0 ] * 2.0f;
-- if ( ( ownerBounds - projBounds).RayIntersection( muzzle_pos, playerViewAxis[0], distance ) ) {
-+ // DG: sometimes the assertion in idBounds::operator-(const idBounds&) triggers
-+ // (would get bounding box with negative volume)
-+ // => check that before doing ownerBounds - projBounds (equivalent to the check in the assertion)
-+ idVec3 obDiff = ownerBounds[1] - ownerBounds[0];
-+ idVec3 pbDiff = projBounds[1] - projBounds[0];
-+ bool boundsSubLegal = obDiff.x > pbDiff.x && obDiff.y > pbDiff.y && obDiff.z > pbDiff.z;
-+ if ( boundsSubLegal && ( ownerBounds - projBounds ).RayIntersection( muzzle_pos, playerViewAxis[0], distance ) ) {
- start = muzzle_pos + distance * playerViewAxis[0];
- } else {
- start = ownerBounds.GetCenter();
diff --git a/games/dhewm3/files/patch-roe-last-level-load-crash b/games/dhewm3/files/patch-roe-last-level-load-crash
deleted file mode 100644
index 6ac921d16615..000000000000
--- a/games/dhewm3/files/patch-roe-last-level-load-crash
+++ /dev/null
@@ -1,51 +0,0 @@
-commit 9950a5721f98eaffc6d8360c6d52ea9bcc0afb9c
-Author: Daniel Gibson <metalcaedes@gmail.com>
-Date: Thu Dec 17 18:07:35 2015 +0100
-
- Fix heap corruption when loading (broken?) .ma models
-
- On FreeBSD, the game used to crash when loading the last level of RoE
- (d3xp), while loading models/david/hell_h7.ma.
- The problem could be reproduced on Linux whith #define USE_LIBC_MALLOC 1
- and clang's AddressSanitizer.
- Turns out that this file specifies a vertex transform for a non-existent
- vertex (index 31, while we only have 0-30) and thus the bounds of
- pMesh->vertexes[] are violated.
- I added a check to ensure the index is within the bounds and a Warning
- if it isn't.
- It should work now. If however it turns out that more files have this
- problem, maybe .ma is parsed incorrectly and we need a differently fix.
-
- (Should) fix #138
-
-diff --git neo/renderer/Model_ma.cpp neo/renderer/Model_ma.cpp
-index e31ca40..1cd672a 100644
---- renderer/Model_ma.cpp
-+++ renderer/Model_ma.cpp
-@@ -203,7 +203,7 @@ bool MA_ParseVertex(idParser& parser, maAttribHeader_t* header) {
-
- //Allocate enough space for all the verts if this is the first attribute for verticies
- if(!pMesh->vertexes) {
-- pMesh->numVertexes = header->size;
-+ pMesh->numVertexes = header->size; // XXX: +1?
- pMesh->vertexes = (idVec3 *)Mem_Alloc( sizeof( idVec3 ) * pMesh->numVertexes );
- }
-
-@@ -692,7 +692,16 @@ void MA_ParseMesh(idParser& parser) {
-
- //Now apply the pt transformations
- for(int i = 0; i < pMesh->numVertTransforms; i++) {
-- pMesh->vertexes[(int)pMesh->vertTransforms[i].w] += pMesh->vertTransforms[i].ToVec3();
-+ int idx = (int)pMesh->vertTransforms[i].w;
-+ if(idx < 0 || idx >= pMesh->numVertexes)
-+ {
-+ // this happens with d3xp/models/david/hell_h7.ma in the d3xp hell level
-+ // TODO: if it happens for other models, too, maybe it's intended and the .ma parsing is broken
-+ common->Warning( "Model %s tried to set an out-of-bounds vertex transform (%d, but max vert. index is %d)!",
-+ parser.GetFileName(), idx, pMesh->numVertexes-1 );
-+ continue;
-+ }
-+ pMesh->vertexes[idx] += pMesh->vertTransforms[i].ToVec3();
- }
-
- MA_VERBOSE((va("MESH %s - parent %s\n", header.name, header.parent)));