Browse Source

Merge pull request #10125 from marcelofg55/fixeditor_crash

Add missing NULL checks to prevent possible crashes on _add_geometry
Rémi Verschelde 8 years ago
parent
commit
ee7e649e69
1 changed files with 14 additions and 9 deletions
  1. 14 9
      drivers/gles2/rasterizer_gles2.cpp

+ 14 - 9
drivers/gles2/rasterizer_gles2.cpp

@@ -4621,16 +4621,19 @@ void RasterizerGLES2::_add_geometry(const Geometry *p_geometry, const InstanceDa
 			if (duplicate) {
 
 				ec = render_list->add_element();
-				memcpy(ec, e, sizeof(RenderList::Element));
+				if (ec)
+					memcpy(ec, e, sizeof(RenderList::Element));
 			} else {
 
 				ec = e;
 				duplicate = true;
 			}
 
-			ec->light_type = light_type;
-			ec->light = sort_key;
-			ec->additive_ptr = &e->additive;
+			if (ec) {
+				ec->light_type = light_type;
+				ec->light = sort_key;
+				ec->additive_ptr = &e->additive;
+			}
 		}
 
 		const RID *liptr = p_instance->light_instances.ptr();
@@ -4651,16 +4654,18 @@ void RasterizerGLES2::_add_geometry(const Geometry *p_geometry, const InstanceDa
 			if (duplicate) {
 
 				ec = render_list->add_element();
-				memcpy(ec, e, sizeof(RenderList::Element));
+				if (ec)
+					memcpy(ec, e, sizeof(RenderList::Element));
 			} else {
-
 				duplicate = true;
 				ec = e;
 			}
 
-			ec->light_type = light_type;
-			ec->light = sort_key;
-			ec->additive_ptr = &e->additive;
+			if (ec) {
+				ec->light_type = light_type;
+				ec->light = sort_key;
+				ec->additive_ptr = &e->additive;
+			}
 		}
 	}