No SegFault when unwrapping a 2D fully masked array

The unwrap_phase function no longer causes a Segmentation fault when passed
a 2D array in which all elements are masked.
This commit is contained in:
Jonathan Helmus
2015-01-21 16:36:58 -06:00
parent de01ea56ae
commit d3024b5c73
2 changed files with 25 additions and 4 deletions
+20
View File
@@ -166,5 +166,25 @@ def test_unwrap_2d_compressed_mask():
assert np.all(unwrap == 0)
def test_unwrap_2d_all_masked():
# Segmentation fault when image is masked array with a all elements masked
# GitHub issue #1347
# all elements masked
image = np.ma.zeros((10, 10))
image[:] = np.ma.masked
unwrap = unwrap_phase(image)
assert np.ma.isMaskedArray(unwrap)
assert np.all(unwrap.mask)
# 1 unmasked element, still zero edges
image = np.ma.zeros((10, 10))
image[:] = np.ma.masked
image[0, 0] = 0
unwrap = unwrap_phase(image)
assert np.ma.isMaskedArray(unwrap)
assert np.sum(unwrap.mask) == 99 # all but one masked
assert unwrap[0, 0] == 0
if __name__ == "__main__":
run_module_suite()
+5 -4
View File
@@ -718,10 +718,11 @@ void unwrap2D(double *wrapped_image, double *UnwrappedImage,
horizontalEDGEs(pixel, edge, image_width, image_height, &params);
verticalEDGEs(pixel, edge, image_width, image_height, &params);
// sort the EDGEs depending on their reiability. The PIXELs with higher
// relibility (small value) first
quicker_sort(edge, edge + params.no_of_edges - 1);
if (params.no_of_edges != 0) {
// sort the EDGEs depending on their reiability. The PIXELs with higher
// relibility (small value) first
quicker_sort(edge, edge + params.no_of_edges - 1);
}
// gather PIXELs into groups
gatherPIXELs(edge, &params);