diff options
author | amdmi3 <amdmi3@FreeBSD.org> | 2016-06-24 06:11:21 +0800 |
---|---|---|
committer | amdmi3 <amdmi3@FreeBSD.org> | 2016-06-24 06:11:21 +0800 |
commit | 885879dfa709fbf4c8d2f761515970f323ea5d87 (patch) | |
tree | 74dc57ef6cafa536e739ac45bd7d18e4a1443b12 /games | |
parent | ca56b7cd35e44111d29d265db33372440009244d (diff) | |
download | freebsd-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/Makefile | 3 | ||||
-rw-r--r-- | games/dhewm3/distinfo | 5 | ||||
-rw-r--r-- | games/dhewm3/files/patch-roe-bfh-crash | 52 | ||||
-rw-r--r-- | games/dhewm3/files/patch-roe-last-level-load-crash | 51 |
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))); |