plpat does not set plsc->patt to a non-zero value, causing the pattern rendering code path to never be followed.
Example 15 does not exhibit this problem because plpsty is called before plpat with a non-zero pattern number. This leaves plsc->patt != 0.
The new pllegend code and also the code in plbuf.c only saves and restores the predefined pattern style (set with plpsty) and does not honour custom patterns set with plpat. The whole fill pattern code needs checking for consistency. A revised example to thoroughly test this might be useful.
See thread on plplot-devel for more details.