summaryrefslogtreecommitdiff
path: root/indra/llimage
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2009-11-06 15:19:30 +0000
committerTofu Linden <tofu.linden@lindenlab.com>2009-11-06 15:19:30 +0000
commit66171216b01c1c5afafd3405a9d17e81f50c1925 (patch)
tree3986101613ac279a64bc3d98e06581d8b59bc348 /indra/llimage
parent6552c1a973ec26a889b6ad4a34c492a3ffc3f644 (diff)
SNOW-329 Handling of error case in llimage.cpp incorrect
This is the same fix as DEV-32269, trivially ported to viewer2. reviewed by merov, james, moss!
Diffstat (limited to 'indra/llimage')
-rw-r--r--indra/llimage/llimage.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index 9bbc55509d..73c23fa8d8 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -1223,25 +1223,28 @@ bool LLImageRaw::createFromFile(const std::string &filename, bool j2c_lowest_mip
ifs.read ((char*)buffer, length);
ifs.close();
- image->updateData();
-
- if (j2c_lowest_mip_only && codec == IMG_CODEC_J2C)
+ BOOL success;
+
+ success = image->updateData();
+ if (success)
{
- S32 width = image->getWidth();
- S32 height = image->getHeight();
- S32 discard_level = 0;
- while (width > 1 && height > 1 && discard_level < MAX_DISCARD_LEVEL)
+ if (j2c_lowest_mip_only && codec == IMG_CODEC_J2C)
{
- width >>= 1;
- height >>= 1;
- discard_level++;
+ S32 width = image->getWidth();
+ S32 height = image->getHeight();
+ S32 discard_level = 0;
+ while (width > 1 && height > 1 && discard_level < MAX_DISCARD_LEVEL)
+ {
+ width >>= 1;
+ height >>= 1;
+ discard_level++;
+ }
+ ((LLImageJ2C *)((LLImageFormatted*)image))->setDiscardLevel(discard_level);
}
- ((LLImageJ2C *)((LLImageFormatted*)image))->setDiscardLevel(discard_level);
+ success = image->decode(this, 100000.0f);
}
-
- BOOL success = image->decode(this, 100000.0f);
- image = NULL; // deletes image
+ image = NULL; // deletes image
if (!success)
{
deleteData();