Explorar o código

fix bug with accessing invalid texture

David Rose %!s(int64=24) %!d(string=hai) anos
pai
achega
1eee97f459
Modificáronse 1 ficheiros con 12 adicións e 4 borrados
  1. 12 4
      pandatool/src/egg-palettize/destTextureImage.cxx

+ 12 - 4
pandatool/src/egg-palettize/destTextureImage.cxx

@@ -70,10 +70,18 @@ DestTextureImage(TexturePlacement *placement) {
 void DestTextureImage::
 copy(TextureImage *texture) {
   const PNMImage &source_image = texture->read_source_image();
-  PNMImage dest_image(_x_size, _y_size, texture->get_num_channels(),
-                      source_image.get_maxval());
-  dest_image.quick_filter_from(source_image);
-  write(dest_image);
+  if (source_image.is_valid()) {
+    PNMImage dest_image(_x_size, _y_size, texture->get_num_channels(),
+                        source_image.get_maxval());
+    dest_image.quick_filter_from(source_image);
+    write(dest_image);
+
+  } else {
+    // Couldn't read the texture, so fill it with red.
+    PNMImage dest_image(_x_size, _y_size, texture->get_num_channels());
+    dest_image.fill(1.0, 0.0, 0.0);
+    write(dest_image);
+  }
 }
 
 ////////////////////////////////////////////////////////////////////