Skip to content

Gendarme.Rules.Interoperability.GetLastErrorMustBeCalledRightAfterPInvokeRule(git)

Sebastien Pouliot edited this page Mar 2, 2011 · 1 revision

GetLastErrorMustBeCalledRightAfterPInvokeRule

Assembly: Gendarme.Rules.Interoperability
Version: git

Description

This rule will fire if Marshal.GetLastWin32Error() is called, but is not called immediately after a P/Invoke. This is a problem because other methods, even managed methods, may overwrite the error code.

Examples

Bad example:

public void DestroyError ()
{
    MessageBeep (2);
    Console.WriteLine ("Beep");
    int error = Marshal.GetLastWin32Error ();
}

Good example:

public void GetError ()
{
    MessageBeep (2);
    int error = Marshal.GetLastWin32Error ();
    Console.WriteLine ("Beep");
}
public void DontUseGetLastError ()
{
    MessageBeep (2);
    Console.WriteLine ("Beep");
}

Source code

You can browse the latest source code of this rule on github.com

Clone this wiki locally