Try to be strict around non-copyability by filmor · Pull Request #2440 · pythonnet/pythonnet

@filmor

@filmor

lostmsu

public double ToDouble() => Runtime.PyFloat_AsDouble(obj);

public override TypeCode GetTypeCode() => TypeCode.Double;
public override int GetHashCode() => ((PyObject)this).GetHashCode();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like it would just stackoverflow

}

public override TypeCode GetTypeCode() => TypeCode.Int64;
public override int GetHashCode() => ((PyObject)this).GetHashCode();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same

Comment on lines +86 to +87

var free = (delegate* unmanaged[Cdecl]<ref StolenReference, void>)freePtr;
free(ref ob);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is wrong. It does not say anywhere but I'd expect tp_free to take a reference to PyObject (e.g. PyObject*), not a reference to reference to it (e.g. not a PyObject**).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, that's probably one reason for the crashes :)

@lostmsu

Seems abandoned - requested changes not addressed.

@filmor

Not abandoned, just very low priority. We have to fix these warnings eventually, they are extremely spammy and the non-copyability check is borderline useless right now. Either we fix things or we drop the analyzer until an official one is added.