@@ -108,12 +108,42 @@ subroutine contour_filled(x, y, z, levels, colormap, show_colorbar, label)
108108 allocate (wp_levels(0 ))
109109 end if
110110
111- ! Forward ALL parameters to underlying method using single call pattern
112- call fig% add_contour_filled(wp_x, wp_y, wp_z, &
113- levels= merge (wp_levels, wp_levels, present (levels)), &
114- colormap= merge (colormap, " " , present (colormap)), &
115- show_colorbar= merge (show_colorbar, .false. , present (show_colorbar)), &
116- label= merge (label, " " , present (label)))
111+ ! Forward parameters to underlying method using conditional calls for memory safety
112+ if (present (levels) .and. present (colormap) .and. present (show_colorbar) .and. present (label)) then
113+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, &
114+ colormap= colormap, show_colorbar= show_colorbar, label= label)
115+ else if (present (levels) .and. present (colormap) .and. present (show_colorbar)) then
116+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, &
117+ colormap= colormap, show_colorbar= show_colorbar)
118+ else if (present (levels) .and. present (colormap) .and. present (label)) then
119+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, &
120+ colormap= colormap, label= label)
121+ else if (present (colormap) .and. present (show_colorbar) .and. present (label)) then
122+ call fig% add_contour_filled(wp_x, wp_y, wp_z, colormap= colormap, &
123+ show_colorbar= show_colorbar, label= label)
124+ else if (present (levels) .and. present (colormap)) then
125+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, colormap= colormap)
126+ else if (present (levels) .and. present (show_colorbar)) then
127+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, show_colorbar= show_colorbar)
128+ else if (present (levels) .and. present (label)) then
129+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, label= label)
130+ else if (present (colormap) .and. present (show_colorbar)) then
131+ call fig% add_contour_filled(wp_x, wp_y, wp_z, colormap= colormap, show_colorbar= show_colorbar)
132+ else if (present (colormap) .and. present (label)) then
133+ call fig% add_contour_filled(wp_x, wp_y, wp_z, colormap= colormap, label= label)
134+ else if (present (show_colorbar) .and. present (label)) then
135+ call fig% add_contour_filled(wp_x, wp_y, wp_z, show_colorbar= show_colorbar, label= label)
136+ else if (present (levels)) then
137+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels)
138+ else if (present (colormap)) then
139+ call fig% add_contour_filled(wp_x, wp_y, wp_z, colormap= colormap)
140+ else if (present (show_colorbar)) then
141+ call fig% add_contour_filled(wp_x, wp_y, wp_z, show_colorbar= show_colorbar)
142+ else if (present (label)) then
143+ call fig% add_contour_filled(wp_x, wp_y, wp_z, label= label)
144+ else
145+ call fig% add_contour_filled(wp_x, wp_y, wp_z)
146+ end if
117147
118148 deallocate (wp_x, wp_y, wp_z)
119149 if (allocated (wp_levels)) deallocate (wp_levels)
@@ -433,12 +463,42 @@ subroutine add_contour_filled(x, y, z, levels, colormap, show_colorbar, label)
433463 allocate (wp_levels(0 ))
434464 end if
435465
436- ! Forward ALL parameters to underlying method using single call pattern
437- call fig% add_contour_filled(wp_x, wp_y, wp_z, &
438- levels= merge (wp_levels, wp_levels, present (levels)), &
439- colormap= merge (colormap, " " , present (colormap)), &
440- show_colorbar= merge (show_colorbar, .false. , present (show_colorbar)), &
441- label= merge (label, " " , present (label)))
466+ ! Forward parameters to underlying method using conditional calls for memory safety
467+ if (present (levels) .and. present (colormap) .and. present (show_colorbar) .and. present (label)) then
468+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, &
469+ colormap= colormap, show_colorbar= show_colorbar, label= label)
470+ else if (present (levels) .and. present (colormap) .and. present (show_colorbar)) then
471+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, &
472+ colormap= colormap, show_colorbar= show_colorbar)
473+ else if (present (levels) .and. present (colormap) .and. present (label)) then
474+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, &
475+ colormap= colormap, label= label)
476+ else if (present (colormap) .and. present (show_colorbar) .and. present (label)) then
477+ call fig% add_contour_filled(wp_x, wp_y, wp_z, colormap= colormap, &
478+ show_colorbar= show_colorbar, label= label)
479+ else if (present (levels) .and. present (colormap)) then
480+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, colormap= colormap)
481+ else if (present (levels) .and. present (show_colorbar)) then
482+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, show_colorbar= show_colorbar)
483+ else if (present (levels) .and. present (label)) then
484+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels, label= label)
485+ else if (present (colormap) .and. present (show_colorbar)) then
486+ call fig% add_contour_filled(wp_x, wp_y, wp_z, colormap= colormap, show_colorbar= show_colorbar)
487+ else if (present (colormap) .and. present (label)) then
488+ call fig% add_contour_filled(wp_x, wp_y, wp_z, colormap= colormap, label= label)
489+ else if (present (show_colorbar) .and. present (label)) then
490+ call fig% add_contour_filled(wp_x, wp_y, wp_z, show_colorbar= show_colorbar, label= label)
491+ else if (present (levels)) then
492+ call fig% add_contour_filled(wp_x, wp_y, wp_z, levels= wp_levels)
493+ else if (present (colormap)) then
494+ call fig% add_contour_filled(wp_x, wp_y, wp_z, colormap= colormap)
495+ else if (present (show_colorbar)) then
496+ call fig% add_contour_filled(wp_x, wp_y, wp_z, show_colorbar= show_colorbar)
497+ else if (present (label)) then
498+ call fig% add_contour_filled(wp_x, wp_y, wp_z, label= label)
499+ else
500+ call fig% add_contour_filled(wp_x, wp_y, wp_z)
501+ end if
442502
443503 deallocate (wp_x, wp_y, wp_z)
444504 if (allocated (wp_levels)) deallocate (wp_levels)
0 commit comments