Crasher in patch for premul flag: missing NULL check

Also converted ugly short pointer casting with the standard ID
define GS(), Get Shorty!
This commit is contained in:
Ton Roosendaal 2008-02-19 09:00:39 +00:00
parent ccac67d3ea
commit 3790c95ab5

@ -7464,7 +7464,9 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
for (tex=main->tex.first; tex; tex=tex->id.next) { for (tex=main->tex.first; tex; tex=tex->id.next) {
if (tex->ima) { if (tex->ima) {
image = newlibadr(fd, lib, tex->ima); image = newlibadr(fd, lib, tex->ima);
if (image->flag & IMA_OLDFLAG) tex->iuser.flag |= IMA_DO_PREMUL; if(image)
if (image->flag & IMA_OLDFLAG)
tex->iuser.flag |= IMA_DO_PREMUL;
} }
} }
@ -7473,7 +7475,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
if (scene->nodetree) { if (scene->nodetree) {
for (node=scene->nodetree->nodes.first; node; node=node->next) { for (node=scene->nodetree->nodes.first; node; node=node->next) {
ID *nodeid = newlibadr(fd, lib, node->id); ID *nodeid = newlibadr(fd, lib, node->id);
if (node->storage && nodeid && *(short*)nodeid->name == ID_IM) { if (node->storage && nodeid && GS(nodeid->name) == ID_IM) {
image = (Image*) nodeid; image = (Image*) nodeid;
iuser = node->storage; iuser = node->storage;
if (image->flag & IMA_OLDFLAG) iuser->flag |= IMA_DO_PREMUL; if (image->flag & IMA_OLDFLAG) iuser->flag |= IMA_DO_PREMUL;
@ -7487,7 +7489,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
if (ntree->type == NTREE_COMPOSIT) { if (ntree->type == NTREE_COMPOSIT) {
for (node=ntree->nodes.first; node; node=node->next) { for (node=ntree->nodes.first; node; node=node->next) {
ID *nodeid = newlibadr(fd, lib, node->id); ID *nodeid = newlibadr(fd, lib, node->id);
if (node->storage && nodeid && *(short*)nodeid->name == ID_IM) { if (node->storage && nodeid && GS(nodeid->name) == ID_IM) {
image = (Image*) nodeid; image = (Image*) nodeid;
iuser = node->storage; iuser = node->storage;
if (image->flag & IMA_OLDFLAG) iuser->flag |= IMA_DO_PREMUL; if (image->flag & IMA_OLDFLAG) iuser->flag |= IMA_DO_PREMUL;