Commit Graph
1471 Commits
Author SHA1 Message Date
asarium a1a8a53a65 Add validation when parsing a file spec
This issue was spotted by Taranis who encountered an assertion caused by
an empty file name. This check will make sure that every string parsed
as a file name will at least contain one character.
2016-03-10 18:33:43 +01:00
Goober5000 e302f0e456 convert the rest of the model instance functions to have model_instance_num parameters instead of object parameters 2016-02-10 23:23:44 -05:00
Goober5000 da812f9433 modify the actual function calls 2016-02-06 18:05:33 -05:00
Goober5000 165124267a Add model_instance handling for weapons, asteroids, and skyboxes 2016-01-24 21:28:43 -05:00
The E 7604e82f05 Renaming vm_transpose_matrix to vm_transpose 2015-12-01 20:37:33 +01:00
The E e0defd287a Renaming vm_vec_crossprod to vm_vec_cross 2015-12-01 20:36:34 +01:00
The E a413255728 Renaming vm_vec_dotprod to vm_vec_dot 2015-12-01 20:35:47 +01:00
MageKing17 91dbf8b751 Improve consistency/flexibility of version-specific comments.
matches_version_specific_tag() now uses the previously-FRED-only scan_fso_version_string() function, meaning it now supports version-specific comments with as few numbers as ;;FSO 3;; to as many numbers as ;;FSO 3.7.3.20151106;;, instead of you being required to supply exactly 3 numbers.
2015-11-20 03:22:45 -08:00
Fabian Woltermann 0c6bada5d5 Merge pull request #455 from Goober5000/set_arrival_info_sexp_help_tweak
improve sexp help regarding bitmasks on ship-arrival-info and ship-departure-info
2015-11-20 12:10:59 +01:00
Goober5000 8f3342f05e improve sexp help regarding bitmasks on ship-arrival-info and ship-departure-info 2015-11-20 00:41:46 -05:00
MageKing17 6dd3158570 Make l_Wing functions handle invalid handles.
Indexing an invalid wing handle now returns invalid ship handles, getting its length returns 0, and getting its name returns an empty string.
2015-11-19 20:27:32 -08:00
MageKing17 004fdae08f Clean up a couple minor issues in lua.cpp
A few comparisons weren't excluding their upper bounds properly, and the documentation for the l_Wing length function was the documentation for the l_Mission_Wings length function.
2015-11-19 20:20:47 -08:00
MageKing17 8fcb1ee789 Add isValid() function to l_Wing objects.
The l_Mission_Wings indexer will return an invalid wing if supplied an invalid name/index. However, you had no way of telling that this was the case because there was no isValid() function to test its validity.
2015-11-19 20:18:31 -08:00
MageKing17 9630d80827 Change wing_name_lookup() to wing_lookup() in l_Mission_Wings indexer.
Avoids inconsistency whereby some wings could be looked up by index but not by name.
2015-11-19 20:16:37 -08:00
DahBlount 9050c08bec Add jumpToMission LUA function and a jump to hub function
The purpose of this function is to provide modders the capability to jump to a mission using LUA scripts. There is an optional argument for jumping to a hub mission, a good example is the JAD campaign map.
2015-11-16 10:45:59 -07:00
MageKing17 dba2d28265 Fix ship-turret-target-order.
We were declaring an array of NUM_TURRET_ORDER_TYPES ints, and then only specifying the first oindex of them; the memcpy() could've been changed to multiply by oindex instead, but it seemed cleaner to just reset new_target_order to -1 in all values and get rid of the redundant per-ship reset.

Discovered by triggering an Int3() in aiturret.cpp (line 1167 as of this writing) and finding uninitialized values in the turret_targeting_order array.
2015-11-10 14:55:55 -08:00
niffiwan 62fcbeaae8 Merge pull request #380 from Goober5000/wf_never_existed_removal
remove WF_NEVER_EXISTED
2015-10-28 19:35:46 +10:00
m!m 332b9fa4a4 Merge pull request #395 from The-E/debug_sexp_fix
Fix the debug sexp
2015-10-26 23:07:03 +01:00
The E e6aa565b42 Name change as suggested by m|m 2015-10-26 20:31:24 +01:00
The E 788e28c646 Creates a new variant of Warning that is not #ifdefed out on release to make the debug sexp work as its description implies 2015-10-26 19:47:51 +01:00
Goober5000 96d32b5031 remove WF_NEVER_EXISTED 2015-10-22 23:27:43 -04:00
MageKing17 064a07349f Fixes numerous SEXPs accessing the wrong nodes.
Affected SEXPs include turret-set-target-order, turret-set-direction-preference, turret-set-rate-of-fire, turret-set-optimum-range, ship-turret-target-order, turret-get-primary-ammo, turret-set-primary-ammo, turret-get-secondary-ammo, and turret-set-secondary-ammo.

It's worth noting that while turret-set-direction-preference, turret-set-rate-of-fire, and turret-set-optimum-range were wrong, they were wrong in a way that wouldn't actually affect the outcome most of the time (thanks to the "if(turret == NULL)" checks simply skipping invalid subsystem names).
2015-10-15 18:58:27 -07:00
MageKing17 75ae511ae6 Stop comparing/setting homing_object to NULL.
The rest of the codebase uses &obj_used_list to mean "no homing target", and the inconsistency could cause all kinds of issues.
2015-10-12 16:10:05 -07:00
Goober5000 bfb4db1dd4 made background sexp errors less fatal 2015-09-30 23:36:47 -04:00
Lari Nieminen 2e9b2de40a Make the array bounds check actually work 2015-09-24 09:25:59 +03:00
niffiwan bc5b7e6906 Merge pull request #355 from ln-zookeeper/l_cf_get_path_id_buf_fix
Fix possible out of bounds array access
2015-09-22 19:13:01 +10:00
Lari Nieminen 6dc3d67905 Fix possible out of bounds array access
If the input string is "/", then buf[-1] would get accessed and in rare cases also modified.
2015-09-22 11:43:20 +03:00
MageKing17 835c4a7d0e Make script_state::UnloadImages() call bm_release instead of bm_unload.
Should result in reduced BMPMAN slot usage with certain scripts as bm_unload() unloads the image data but holds on to the slot, while bm_release() releases the slot.
2015-09-18 21:22:07 -07:00
MageKing17 24b0b28f6a Fix double-free with for-counter (introduced by myself).
In 9ec10dd I thought I was fixing a memory leak, but the actual scenario was that the freeing was just delayed until later. This removes the freeing added by 9ec10dd and changes the free() calls into vm_free() calls.
2015-09-16 19:55:24 -07:00
Echelon9 b7aaf2e885 Refactor bm_set_render_target() return type to bool, thereby removing a TODO 2015-09-07 17:07:24 +10:00
MageKing17 df8317f3ed Merge pull request #311 from ln-zookeeper/fotg_to_master
Added Lua functions to read mouse/joystick sensitivity and deadzone
2015-08-29 09:38:21 -07:00
Lari Nieminen 58b8f2a33c Added Lua functions to read mouse/joystick sensitivity and deadzone 2015-08-29 16:54:19 +03:00
Goober5000 886deddf99 Merge pull request #306 from MageKing17/bugfix/call-ssm-strike-warning
Fixes call-ssm-strike resulting in a Warning about a null vec3d.
2015-08-22 18:36:14 -04:00
m!m 56ab9e02c8 Merge pull request #304 from MageKing17/bugfix/parselo-char-fix
Makes vsprintf() stop chopping off the last character. Fixes issue #298.
2015-08-22 19:21:30 +02:00
MageKing17 238dbc5749 Makes vsprintf() stop chopping off the last character. Fixes issue #298.
Also fixes saving missions in FRED, since it uses the same function.
2015-08-22 03:38:16 -07:00
MageKing17 cd3b543e56 Add null pointer checks throughout lua.cpp.
Previously, the "this != NULL" checks in the isValid() methods were covering most of these cases, but they were removed as part of PR #274 because clang was generating warnings because calling a method on a null pointer is undefined behavior (so the condition *should* be tautological). This performs the checks outside of isValid(), which should avoid (at least this variety of) undefined behavior while fixing the crashes that dereferencing null pointers was causing.
2015-08-22 03:36:26 -07:00
MageKing17 fb8ffcacfd Fixes call-ssm-strike resulting in a Warning about a null vec3d.
ssm_create() subtracts the start coordinates from the position of the target, and then normalizes that. Since call-ssm-strike was using the position of the target as the start coordinates, this was obviously resulting in normalizing a null vec3d, generating the spurious warning. This just makes call-ssm-strike use a point immediately behind the target's position (using the target's orientation) as the starting coordinate, thereby avoiding the warning.
2015-08-21 21:12:03 -07:00
MageKing17 d7ff43a1d1 Fix check_sexp_syntax() so it works properly with OPF_SSM_CLASS.
Also makes OP_BEAM_FLOATING_FIRE grab the correct ship_index for the subsystem check.
2015-08-21 13:41:45 -07:00
Cliff Gordon 0a2b97c3bc Merge pull request #41 from MageKing17/ship_info
Ship_info vectorization, ship templates.
2015-08-20 21:51:18 -05:00
asarium 51832fd563 Fix SCP_string version of vsprintf
The previous version didn't use the c-library which would cause incompatibilities with formats that assume all format specified to be supported.
2015-08-20 22:52:49 +02:00
MageKing17 64c9b272e7 Merge branch 'master' of ssh://github.com/scp-fs2open/fs2open.github.com into ship_info
Conflicts:
	code/pilotfile/pilotfile.cpp
2015-08-19 11:53:25 -07:00
asarium 3a69db26eb Fix unneded checks for this != nullptr in lua.cpp 2015-08-19 11:26:31 +02:00
asarium eb765b0c99 Fir format warnings in parselo.cpp 2015-08-19 11:26:29 +02:00
asarium 3d06468e2a Fix format warnings in lua.cpp 2015-08-19 11:26:29 +02:00
MageKing17 990411fd0b Merge pull request #286 from Goober5000/woutersmits_fix
fix an obscure edge-case sexp crash
2015-08-18 23:30:26 -07:00
Goober5000 bd3cd7eb18 Merge pull request #195 from Echelon9/fix/sort-uniq-includes
Review and refactor #include's
2015-08-19 00:05:02 -04:00
Goober5000 17851dcc56 fix an obscure edge-case sexp crash
This bug was found by, of all people, woutersmits, while FREDding his happynewyear campaign.  See http://www.hard-light.net/forums/index.php?topic=90069.0 for discussion.  The crash was triggered by the use of ( validate-all-arguments ) as the entire sexp tree for one of his mission events.

This was a two-part fix.  The first part was to ensure that every *-argument sexp (of which validate-all-arguments is but one) is actually used within a when-argument or every-time-argument tree.  More specifically, every sexp operation that expects an argument handler should first check that the arg_handler node actually exists.

The second part was to partially revert one of Taylor's old commits:

Revision: 3644
Author: taylor
Date: Tuesday, October 24, 2006 9:17:24 AM
Message:
various bits of cleanup (warning messages, things that Valgrind complained about, etc.)
fix an out-of-bounds issue on Sexp_nodes[] which was leading to stack corruption

----
Modified : /branches/fs2_open_3_6_9/fs2_open/code/parse/sexp.cpp

This was intended to prevent a -1 array reference into Sexp_nodes[].  What Taylor did was to cause repeated calls of the parent_operator function to loop endlessly at the topmost parent.  But there are certain edge cases (such as the one woutersmits discovered) where you need to know whether a parent is the topmost one.  What Taylor should have done, and what this change does, is to keep the -1 as a valid return value but check for it in the places where it may cause an issue.
2015-08-18 21:32:14 -04:00
Goober5000 efce7de00d fix syntax error, add node reference 2015-08-18 19:58:34 -04:00
Goober5000 2b032a1dbc tweaks per MageKing17's suggestions 2015-08-18 13:27:57 -04:00
Goober5000 e1d3838b2e various assertions to improve the sexp code 2015-08-18 01:00:43 -04:00