Asher Baker
215599b90f
Merge PR #489 : Do not call functions in paused plugins
...
This should be reverted when pausing is removed, see PR discussion.
2016-10-03 16:51:45 +01:00
Kyle Sanderson
2deaa666f3
Fix erroneous () in DebugReport:: printouts. ( #517 )
2016-10-03 16:29:51 +01:00
Asher Baker
47dd2870d9
Merge pull request #476 from alliedmodders/query-format
...
Implement an auto-escaping Format native for SQL query construction
2016-10-03 16:20:01 +01:00
David Anderson
27e812461f
Update to the latest SourcePawn and AMTL.
2016-09-24 16:45:04 -07:00
Peace-Maker
ecbedb7b11
Don't expose CellArrays in ISourceMod to extensions
...
Don't let extensions have access to the internal implementation of cell
arrays.
2016-08-26 15:09:18 -07:00
Peace-Maker
5b9ae5917b
Add ICellArray and create/free in ISourceMod
...
Add an ICellArray interface to expose the adt_array CellArray class from
logic to core.
Add methods to ISourceMod to create and delete ICellArray instances in
logic.
2016-08-21 21:32:23 +02:00
David Anderson
61e958e679
Merge pull request #529 from peace-maker/optional_natives
...
Keep optional natives optional after reloading
2016-07-26 12:59:32 -07:00
David Anderson
3cccfc15da
Update to SourcePawn 1.9 and the latest AMTL.
2016-07-26 01:36:35 -07:00
Peace-Maker
2c8614c639
Keep optional natives optional after reloading
...
Bug 6518
Starting from no plugins loaded, after the final step of the following,
basetriggers will be marked as errored because mapchooser is missing:
Load basetriggers
Load mapchooser
Unload mapchooser
Load mapchooser
Unload mapchooser
We lose the SP_NTVFLAG_OPTIONAL when removing a WeakNative. The
__pl_mapchooser_SetNTVOptional() is only called in basetriggers when it
is loaded. It adds the OPTIONAL flag to the mapchooser natives the
basetrigger plugin uses.
When mapchooser is loaded, the native is overwritten and the OPTIONAL
flag consumed (WeakNative registered), but not preserved. Later when
mapchooser is unloaded the WeakNative is removed in
CNativeOwner::UnbindWeakRef, but the OPTIONAL flag isn't added again.
The next time mapchooser is loaded, the natives aren't optional anymore
and will cause a real dependency.
The change in ShareSys isn't needed to fix the error, but is included to
keep the SP_NTVFLAG_OPTIONAL flag consistent.
2016-07-21 01:52:47 +02:00
David Anderson
34dedcaab1
Remove half-up rounding.
2016-06-22 12:54:36 -07:00
Fyren
4d8e76202d
Merge pull request #518 from alliedmodders/UTIL_ReplaceAll-fix
...
Fix UTIL_ReplaceAll not properly tracking length (bug 6472)
2016-06-06 16:40:17 -06:00
Fyren
4e654704dc
Slightly better handling of plugin reloading.
2016-06-06 22:26:34 +00:00
Fyren
1790033458
Fix UTIL_ReplaceAll not properly tracking length.
2016-06-06 06:29:53 +00:00
Nicholas Hastings
11b4320204
Fix potential crash on plugin load when a required library is not found.
2016-04-27 10:49:39 -04:00
Nicholas Hastings
ed46ca3328
Add support for retrieving game server Steam Id (bug 6404). ( #495 )
2016-04-26 23:17:08 -04:00
Peace-Maker
4f4903a05e
Don't try to call functions in paused plugins
...
This avoids spam of "Plugin not runnable" exceptions on shutdown or
plugin unload.
When re/unloading a plugin which has other ones depending on it, like
the adminmenu, It pauses the depending plugins putting them in an
"Depends on plugin: %s" error state. ForwardSys doesn't remove them from
the forward lists on pause, specially the global forwards, and still
tries to call all the global forwards like OnPlayerRunCmd and
OnLibraryAdded etc. on the paused plugins. Executing functions in paused
runtimes has been ignored in the VM before introducing the "Exception"
mechanism, but now they're all logged.
This adds checks to make sure the plugin is runnable before calling a
function. (Stolen from #438 )
2016-03-14 13:24:23 +01:00
David Anderson
f7bb423f06
Update to the latest SourcePawn and AMTL.
2016-03-13 16:29:11 -07:00
David Anderson
a7c7e72004
Merge pull request #485 from peace-maker/plugin_unloading
...
Fix scheduled plugin unloading
2016-02-29 10:53:26 -05:00
Peace-Maker
df59fd5b0e
Fix scheduled plugin unloading
...
When unloading a plugin no plugin is allowed to execute code. There's
been some flawed logic in the scheduling, leading it to bail out if the
plugin was marked for scheduled unloading..
Also change the "error" message of `sm plugins unload` to something
nice.
2016-02-29 16:40:24 +01:00
Peace-Maker
060f63e9db
Fix printing dependent extension name
...
Typo which will print the name of the extension being unloaded instead
of the one which would be unloaded as well because of it.
2016-02-27 21:22:09 +01:00
Asher Baker
700ec92a9a
Implement an auto-escaping Format native for SQL query construction
2016-02-15 15:05:16 +00:00
Asher Baker
272655f340
Changed AddString to be failable
2016-02-15 14:57:56 +00:00
Asher Baker
1ff13c59cf
Move the guts of Format to a helper function
2016-02-15 12:49:22 +00:00
Asher Baker
936bdc47f0
Add argument index to format error messages
2016-02-15 10:20:08 +00:00
Asher Baker
9008705b9d
Pass format flags down to AddString
2016-02-15 10:16:14 +00:00
Asher Baker
886c358e91
Renumber format flags for sanity
2016-02-15 10:09:48 +00:00
Peace-Maker
edb820eae8
Add info message when loading custom gamedata
...
Print a message to console when there is a gamedata file loaded from the
|custom| folder.
2016-01-03 22:28:24 +01:00
Fyren
0e80ffef55
Merge pull request #448 from alliedmodders/use-blamepluginerror
...
Update SP and use BlamePluginError in sdkhooks and sdktools.
2015-11-18 18:33:10 -07:00
Asher Baker
eb8996699e
Merge pull request #443 from alliedmodders/fix-ext-dep-load
...
Fix crash on failing to load dependent extension.
2015-11-18 14:12:27 +00:00
Fyren
fec2fa3bf0
Update SP and use BlamePluginError in sdkhooks.
2015-11-18 01:24:31 +00:00
Asher Baker
6ab0c35837
Pre-fill buffer for GetClientAuth*
2015-11-10 14:31:02 +00:00
Asher Baker
b81b6cd1c6
Fix crash on failing to load dependent extension.
2015-11-09 14:56:42 +00:00
David Anderson
c3e5d62bf6
Update to the latest AMTL: remove PassRef.
2015-11-08 13:51:22 -08:00
David Anderson
e2b399b8d3
Update to the latest AMTL - Rename Ref to RefPtr.
2015-11-08 13:14:57 -08:00
David Anderson
1f4be9798e
Flush asynchronous queries before OnPluginEnd().
2015-11-01 00:36:20 -07:00
David Anderson
c849616003
Add an OnPluginWillUnload callback that precedes OnPluginEnd().
2015-11-01 00:30:37 -07:00
David Anderson
d674414cf0
Add a versioned IPluginsListener and deprecate the non-versioned class.
2015-11-01 00:23:33 -07:00
David Anderson
cb3f6df111
Require that no plugin code be live when any plugin unloads.
2015-10-31 19:38:30 -07:00
David Anderson
59623695af
Improve plugin console diagnostics.
2015-10-31 17:30:33 -07:00
David Anderson
87e9dee78b
Evict plugins that fail to load.
2015-10-31 17:30:33 -07:00
David Anderson
62edc5f4c0
Clean up "sm plugins list" after status meaning clarifications.
2015-10-31 17:25:59 -07:00
David Anderson
485ade2610
Fix a number of inconsistencies in plugin state.
...
1. Fixed OnPluginUnloaded not pairing if the plugin failed.
2. Unify error message handling in the second pass.
3. Do not add libraries if a plugin failed during OnPluginStart.
2015-10-31 17:25:59 -07:00
David Anderson
9e4fff3362
Add a state variable to CPlugin to indicate queue/list membership.
2015-10-31 17:25:59 -07:00
David Anderson
7cc911ae58
Separate plugin unloading into an eviction step, which disconnects the plugin from Core.
...
Note: this also ensures that library action callbacks are balanced (i.e., we do not notify
libraries are being dropped if they were never notified as being added).
2015-10-31 17:25:59 -07:00
David Anderson
82ff7d5af7
Rename CPlugin::SetErrorState to EvictWithError.
2015-10-31 17:25:59 -07:00
David Anderson
c4c6efb140
Remove a crazy unused function from CPluginManager.
2015-10-31 17:25:59 -07:00
David Anderson
f078ea1f8a
Remove the Illiad-length mostly-wrong comment at the top of PluginSys.h
2015-10-31 17:25:59 -07:00
David Anderson
ab1b915a3c
Fix re-entrancy issues in CPluginManager by using ReentrantList.
2015-10-31 17:24:22 -07:00
David Anderson
709149fbed
Remove the CPluginIterator cache.
2015-10-31 17:23:24 -07:00
David Anderson
e57a076dc8
Remove CPluginManager's friend access to CPlugin.
2015-10-31 17:19:10 -07:00
David Anderson
c21b3a36fc
Remove CPluginManager direct use of CPlugin::NativeOwner::m_fakes.
2015-10-31 17:19:10 -07:00
David Anderson
f765c8d436
Remove CPluginManager direct use of CPlugin::m_LibraryMissing.
2015-10-31 17:19:10 -07:00
David Anderson
ae44a6540a
Remove CPluginManager direct use of CPlugin::m_FakeNativesMissing.
2015-10-31 17:19:10 -07:00
David Anderson
f27dbaf716
Remove CPluginManager direct use of CPlugin::m_RequiredLibs.
2015-10-31 17:19:10 -07:00
David Anderson
717ad38d06
Remove CPluginManager direct use of CPlugin::m_errormsg.
2015-10-31 17:19:10 -07:00
David Anderson
60f06d1414
Remove CPluginManager direct use of CPlugin::m_FileVersion.
2015-10-31 17:19:10 -07:00
David Anderson
a579136a3d
Remove CPluginManager direct use of CPlugin::m_DateTime.
2015-10-31 17:19:10 -07:00
David Anderson
2f3d523ac0
Remove CPluginManager use of CPlugin::m_pRuntime.
2015-10-31 17:19:10 -07:00
David Anderson
df5c53fa4a
Remove CPluginManager direct use of CPlugin::m_filename.
2015-10-31 17:19:10 -07:00
David Anderson
46c069dbbe
Remove CPluginManager direct use of CPlugin::m_Libraries.
2015-10-31 17:19:09 -07:00
David Anderson
bda9defc0f
Remove CPlugin's friend access to CPluginManager.
2015-10-31 17:19:09 -07:00
David Anderson
6c5ab80418
Refactor and cleanup the AMBuildScript a bit.
2015-10-08 14:55:53 -07:00
David Anderson
88a47ff681
Switch to re-entrant lists in ForwardSys and CForward.
2015-09-21 01:07:34 -07:00
David Anderson
c1396de2fc
Replace SourceHook::List with ke::LinkedList in ForwardSys.
2015-09-21 01:07:25 -07:00
David Anderson
0810c4b217
Fix style issues in ForwardSys, removing extra blocks and tightening variable scope.
...
This also fixes a bug where IsFunctionRegistered() did not check the paused plugins list.
2015-09-21 01:07:18 -07:00
David Anderson
632c7d05dd
Remove the forward cache and simplify CForward construction.
2015-09-21 01:07:01 -07:00
David Anderson
dcc192ee0d
Use new header style.
2015-09-21 01:06:43 -07:00
David Anderson
9b1678bd18
Remove error outparams from first-pass internal plugin loading commands.
2015-09-21 00:51:20 -07:00
David Anderson
5f19fc036d
Refactor AskPluginLoad() to contain its own error state.
2015-09-21 00:51:16 -07:00
David Anderson
5eec2e7d6d
Remove error message outparam to LoadExtensions.
2015-09-21 00:51:11 -07:00
David Anderson
3195dec436
Split LoadOrRequireExtensions into two distinct functions.
2015-09-20 23:44:45 -07:00
David Anderson
15f4a05122
Factor the iterator out of LoadOrRequireExtensions.
2015-09-20 23:44:41 -07:00
David Anderson
e559e6ffa8
Simplify pass 2 of LoadOrRequireExtensions.
2015-09-20 23:44:37 -07:00
David Anderson
23290b35a7
Clean up LoadOrRequireExtensions and properly scope variables.
2015-09-20 23:44:34 -07:00
David Anderson
2b3da56fb5
Dedent a huge block of code.
2015-09-20 23:44:30 -07:00
David Anderson
370710c0ff
Fix build.
2015-09-20 21:39:12 -07:00
David Anderson
4fc7eb8a6b
Remove trailing whitespace.
2015-09-20 20:58:03 -07:00
David Anderson
38c01714d7
Clean up AskPluginLoad logic.
2015-09-20 20:57:59 -07:00
David Anderson
0e1a34a4d7
Hide CPlugin timestamp management details.
2015-09-20 20:57:55 -07:00
David Anderson
d5d7e8c9cf
Factor guts of _LoadPlugin into a separate function.
2015-09-20 20:57:51 -07:00
David Anderson
76d681761d
Factor malware checks into its own pass.
2015-09-20 20:57:47 -07:00
David Anderson
3807edbeb8
Move CPlugin compilation into its own function.
2015-09-20 20:57:43 -07:00
David Anderson
d9216cc599
Remove references to non-mapupdated plugins.
2015-09-20 20:31:30 -07:00
David Anderson
8a7dfdbc11
Move the "sm" command to core/logic.
2015-09-20 14:33:17 -07:00
David Anderson
168b779786
Move sm_dump_handles to core/logic.
2015-09-20 14:33:10 -07:00
David Anderson
c853050265
Move sm_reload_translations to Translator.
2015-09-20 14:33:06 -07:00
David Anderson
c614d19af0
Move sm_dump_admcache to AdminCache.
2015-09-20 14:33:02 -07:00
David Anderson
c36f80b93d
Don't use server commands to flush plugin unloads.
2015-09-15 19:43:41 -07:00
David Anderson
d473b0441d
Allow plugin info fields to outlive their runtime.
2015-09-15 19:07:22 -07:00
David Anderson
2adae27557
Clean up CPlugin member variables.
2015-09-14 12:55:42 -07:00
David Anderson
3430962cbe
Simplify required libs handling and make sure they create dependency links.
2015-09-14 12:53:23 -07:00
David Anderson
0aaa659e29
Fix how the mark-serial is used.
...
The mark-serial is a generation number to optimize dependency tracking. It did not actually get
applied correctly, meaning that in rare cases we could miss dependencies. This patch removes the
incorrect serial propagation and ensures that we don't double-count a dependent plugin.
Additionally, this patch ensures that all callers of BindNativeToPlugin() will update the mark
serial, as is required to correctly track dependencies.
2015-09-14 12:50:50 -07:00
David Anderson
9ef8cc7064
Separate the top of UnloadPlugin into a precursor function.
2015-09-14 12:50:39 -07:00
David Anderson
67c8ee4ce3
Move CDataPack from core to logic.
2015-09-06 11:02:52 -07:00
David Anderson
4e275eea97
Split intercom.h into separate headers and reduce shared header inclusion.
2015-08-31 10:00:49 -07:00
David Anderson
4f1705e001
Rename some bridge interfaces.
2015-08-31 09:57:32 -07:00
David Anderson
5d55ff23bd
Move OnQueryCvarValueFinished into the global hook manager.
2015-08-31 09:22:08 -07:00
David Anderson
401aa038f8
Start a new bridge mechanism for global callbacks.
2015-08-31 00:07:27 -07:00
David Anderson
38e1c2f1f3
Clean up the core side of the logic bridge.
2015-08-30 23:30:15 -07:00
David Anderson
9e4d396d5e
Virtualize MMS functions in the core/logic bridge.
2015-08-30 23:29:46 -07:00