[Geany-Devel] [ANN] document_find_by_id() added to plugin API

Lex Trotman elextr at xxxxx
Wed Sep 3 23:00:59 UTC 2014


On 4 September 2014 08:41, Frank Lanitz <frank at frank.uvena.de> wrote:
> Am 29.08.2014 um 12:58 schrieb Nick Treleaven:
>> On 28/08/2014 16:21, Nick Treleaven wrote:
>>> Code that uses doc->is_valid or DOC_VALID() outside of iterating
>>> documents_array probably should be using document_find_by_id() instead,
>>> because closed document pointers only stay invalid until another
>>> document needs to be opened.
>>
>> Additional: if there is no chance of another document having been opened
>> since, but there is a chance a document was closed, it should be fine to
>> check doc->is_valid.
>
> Do I understand you correct, that it would make sense to recheck every
> plugin and in most cases replace(update the document-checks there?

Hi Frank,

Yes, anywhere Geany or a plugin releases control (eg returns from a
callback, opens a dialog) and then gets control back (eg another
callback, returns from the dialog) there can be any amount of unknown
changes to documents in between.  They can be closed, new ones opened
etc.

This may re-use document memory, so the doc pointer may point to a
completely different document.

To ensure that the same *document* continues to be accessed the id
should be used and re-converted to a doc pointer each time control is
returned.

Cheers
Lex

PS Beware of losses of control buried in functions you call :)

>
> Cheers,
> Frank
>
>
>
> _______________________________________________
> Devel mailing list
> Devel at lists.geany.org
> https://lists.geany.org/cgi-bin/mailman/listinfo/devel
>


More information about the Devel mailing list