Commit graph

9411 commits

Author SHA1 Message Date
Kp 1e13617c3e Pass canvas to hud_show_afterburner 2017-02-19 19:33:39 +00:00
Kp 4947779952 Pass canvas to hud_show_energy 2017-02-19 19:33:38 +00:00
Kp fbd02b5fbe Factor out template functor of create_vertex_lists_by_predicate 2017-02-19 19:33:38 +00:00
Kp b918760b3f Move find_connect_side body to dcx 2017-02-19 19:33:38 +00:00
Kp b82d9d2b51 Move get_side_verts body to dcx 2017-02-19 19:33:38 +00:00
Kp 9821a77372 Simplify use of get_num_faces 2017-02-19 19:33:38 +00:00
Kp cdb193c053 Use unsigned for sides/verts in more places 2017-02-19 19:33:38 +00:00
Kp 0f00cf51b0 Make segment vertices unsigned 2017-02-19 19:33:37 +00:00
Kp 3e51705de6 Shorten get_verts_for_normal 2017-02-19 19:33:37 +00:00
Kp 0202765322 Simplify create_walls_on_side 2017-02-19 19:33:37 +00:00
Kp c0fc6aa419 Factor out side normal initialization 2017-02-19 19:33:37 +00:00
Kp b2ca2e35df Fold add_side_as_2_triangles temporaries 2017-02-19 19:33:37 +00:00
Kp ef928d39c0 Fix check_header_includes=1 gamemine.h 2017-02-19 19:33:37 +00:00
Kp 45d7c6da65 Fix check_header_includes=1 wall.h 2017-02-19 19:33:36 +00:00
Kp a815541ef5 Fix check_header_includes=1 poison.h 2017-02-19 19:33:36 +00:00
Kp cd25b55305 Fix check_header_includes=1 fwd-valptridx.h 2017-02-19 19:33:36 +00:00
zico b36c6f20c7 Made scrape_player_on_wall() based on a timer. Due to the player being pushed away from the lava/water surface in every frame in a random vector (wrong, too), player movement per frame was not enough to counter this on FPS rates > ~120 which made damage scaling per frame nonsensical in these situations. Instead, execute scrape results in intevals based on DESIGNATED_GAME_FRAMETIME (or per frame if FrameTime>DESIGNATED_GAME_FRAMETIME) which fixes the issues and generally works much better for the purpose of this function. 2017-02-13 11:00:21 +01:00
Kp 569d64e927 Propagate Hack_DblClick_MenuMode 2017-02-11 21:42:47 +00:00
Kp 3de4a0b3e0 Cache canvas in show_netplayerinfo 2017-02-11 21:42:46 +00:00
Kp b116939ace Cache canvas in con_draw 2017-02-11 21:42:46 +00:00
Kp aadf18e694 Cache canvas in draw_automap 2017-02-11 21:42:46 +00:00
Kp 97cf921b72 Cache canvas in ui_draw_checkbox 2017-02-11 21:42:46 +00:00
Kp 2725ea02c2 Cache canvas in ui_draw_button 2017-02-11 21:42:46 +00:00
Kp b390ce2da0 Use cached canvas in gr_string 2017-02-11 21:42:46 +00:00
Kp fb53bc9257 Pass canvas to player_dead_message 2017-02-11 21:42:46 +00:00
Kp 00492073d2 Pass canvas to render_countdown_gauge 2017-02-11 21:42:45 +00:00
Kp 2ee8e31f9f Pass canvas to draw_window_label 2017-02-11 21:42:45 +00:00
Kp 1327dd7de6 Pass canvas to show_framerate 2017-02-11 21:42:45 +00:00
Kp 6c83d56219 Pass canvas to game_draw_marker_message 2017-02-11 21:42:45 +00:00
Kp 5fcbc44c7f Pass canvas to game_draw_multi_message 2017-02-11 21:42:45 +00:00
Kp 5736804a23 Fold gr_set_curfont calls in credits_handler 2017-02-11 21:42:45 +00:00
Kp 5f855437ed Pass canvas to name_frame 2017-02-11 21:42:45 +00:00
Kp a23f33a34d Pass canvas to draw_player 2017-02-11 21:42:44 +00:00
Kp 9ad724f32f Pass canvas to DrawMarkers 2017-02-11 21:42:44 +00:00
Kp 24c4a030a1 Pass canvas to DrawMarkerNumber 2017-02-11 21:42:44 +00:00
Kp 05905ced06 Pass font to gr_get_string_wrap 2017-02-11 21:42:44 +00:00
Kp 46be18e7f9 Pass canvas to get_centered_x 2017-02-11 21:42:44 +00:00
Kp 69a4857ba5 Pass canvas to ui_draw_box_in1 2017-02-11 21:42:44 +00:00
Kp 75ffb6b778 Add valptridx trap for dereferencing a null pointer 2017-02-11 21:42:44 +00:00
Kp 0fd80b12df Prevent out-of-bounds read when sorting segment sides
GCC 6 `std::sort` sometimes compares an element to itself.  For a normal
implementation of comparison, this is useless, but not harmful.  The
render comparison predicate relies on accessing A[B[a][b]] when
comparing `a` and `b`.  Array `B` has `-1` in positions where `a == b`,
which causes an access to `A[-1]`, which is undefined behavior.  This
crashes when using _GLIBCXX_DEBUG:

    Error: attempt to subscript container with out-of-bounds index -1, but
    container only holds 8 elements.

    Objects involved in the operation:
	sequence "this" @ 0x0x335adf0 {
	  type = std::__debug::array<int, 8ul>::_Array_check_subscript<8ul>;
	}

Since this is undefined behavior, non-debug builds might also misbehave.
Current data layouts make it likely that the failure would not have
externally observable consequences.

Prevent the invalid access by short-circuiting the result if `a == b`.
2017-02-11 21:42:43 +00:00
Kp dfe827e793 Relax valptridx<T>::guarded compile-time checks
When using `gcc -fsanitize=undefined`, the compiler proves trivial
results, so `DXX_CONSTANT_TRUE` is defined.  It then fails to prove that
`DXX_CONSTANT_TRUE(m_state == checked)` is false, causing a compile-time
error.  Relax the check to occur only when it can prove `m_state` equal
to a disallowed value, rather than when it cannot prove `m_state` equal
to an allowed value.

Move the preprocessor guard so that the runtime check is always visible.
Optimizing compilers can still eliminate that check at compile-time when
it provably never fails.
2017-02-11 21:42:43 +00:00
Kp ceb510566f Avoid passing reference to null weapon_object
Rebirth built with `gcc -fsanitize=undefined` warns when binding a
reference to nullptr, even if that reference is never followed.  This
could be reproduced using a guided missile against the first PIG in
Descent 2: Counterstrike level 1.

This object pointer is used only to test for address equality, so
nullptr is safe here.  Switch to pass it as a pointer to prevent the
warning.
2017-02-11 21:42:43 +00:00
Kp 40f5ad42d1 Use PUT_INTEL_INT to handle alignment when updating bitmap size 2017-02-11 21:42:43 +00:00
Kp 17208cca79 Disallow int for vm_distance_squared 2017-02-11 21:42:43 +00:00
Kp d8638c6c89 Pass canvas to UP_ARROW_MARKER, DOWN_ARROW_MARKER 2017-02-11 21:42:43 +00:00
Kp 6b8f08142f Pass canvas to LINE_SPACING
Macro LINE_SPACING previously used global grd_curcanv implicitly.
Change it to take a canvas argument.  Change all callers to pass
grd_curcanv, so that usage is explicit.
2017-02-11 21:42:42 +00:00
Kp ed9fe62d85 Expand GHEIGHT
As a macro, it always refers to the global grd_curcanv.  This interferes
with converting canvas handling to be an argument.  Expand GHEIGHT so
that uses of grd_curcanv can be changed individually.
2017-02-11 21:42:42 +00:00
Kp 03c43b1d7f Expand GWIDTH
As a macro, it always refers to the global grd_curcanv.  This interferes
with converting canvas handling to be an argument.  Expand GWIDTH so
that uses of grd_curcanv can be changed individually.
2017-02-11 21:42:42 +00:00
Kp 0d5d2e77a8 Pass canvas to g3_check_and_draw_poly 2017-02-11 21:42:42 +00:00
Kp 48bf96fe6a Pass canvas to g3_draw_bitmap 2017-02-11 21:42:42 +00:00