• PBP 3.0.9 LONG Array bank-boundary vulnerability

    It is highly recommended that you update to PBP 3.0.10. This update is free to users of 3.0.9, but it isn't compatible with Windows XP. This post is intended as a warning and workaround for those that can't bring themselves to upgrade to a newer version of Windows.

    Individual LONGs are not vulnerable to this issue, only arrays. This is a rare issue that is most likely to be encountered in PIC18 programs that use most of the available ram and declare large LONG array variables.

    In 3.0.9, PBP may place LONG arrays at addresses that result in individual elements of the array spanning bank boundaries in RAM. This can cause unexpected results when reading or writing to such elements.

    If you must use 3.0.9, manually specify hex addresses that end with 0, 4, 8, or C when you declare LONG ARRAY Variables:

    array1 VAR LONG[100] $0100
    array2 VAR LONG[100] $02A8
    array3 VAR LONG[32]  $043C