Added/Fixed null pointer checks

This commit is contained in:
Wilson E. Alvarez 2017-08-25 11:14:33 -04:00
parent 53c0010932
commit 7a07895920
14 changed files with 39 additions and 47 deletions

View file

@ -247,11 +247,8 @@ void RasterizerGLES3::set_current_render_target(RID p_render_target) {
if (p_render_target.is_valid()) { if (p_render_target.is_valid()) {
RasterizerStorageGLES3::RenderTarget *rt = storage->render_target_owner.getornull(p_render_target); RasterizerStorageGLES3::RenderTarget *rt = storage->render_target_owner.getornull(p_render_target);
if (!rt) {
storage->frame.current_rt = NULL;
}
ERR_FAIL_COND(!rt);
storage->frame.current_rt = rt; storage->frame.current_rt = rt;
ERR_FAIL_COND(!rt);
storage->frame.clear_request = false; storage->frame.clear_request = false;
glViewport(0, 0, rt->width, rt->height); glViewport(0, 0, rt->width, rt->height);

View file

@ -1646,7 +1646,7 @@ PropertyInfo AnimationKeyEditor::_find_hint_for_track(int p_idx, NodePath &r_bas
List<PropertyInfo> pinfo; List<PropertyInfo> pinfo;
if (res.is_valid()) if (res.is_valid())
res->get_property_list(&pinfo); res->get_property_list(&pinfo);
else else if (node)
node->get_property_list(&pinfo); node->get_property_list(&pinfo);
for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) { for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {

View file

@ -253,8 +253,8 @@ static void _create_script_templates(const String &p_path) {
dir->change_dir(p_path); dir->change_dir(p_path);
for (int i = 0; i < keys.size(); i++) { for (int i = 0; i < keys.size(); i++) {
if (!dir->file_exists(keys[i])) { if (!dir->file_exists(keys[i])) {
file->reopen(p_path.plus_file((String)keys[i]), FileAccess::WRITE); Error err = file->reopen(p_path.plus_file((String)keys[i]), FileAccess::WRITE);
ERR_FAIL_COND(!file); ERR_FAIL_COND(err != OK);
file->store_string(templates[keys[i]]); file->store_string(templates[keys[i]]);
file->close(); file->close();
} }

View file

@ -3766,7 +3766,7 @@ bool CanvasItemEditorViewport::_cyclical_dependency_exists(const String &p_targe
void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &path, const Point2 &p_point) { void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &path, const Point2 &p_point) {
child->set_name(path.get_file().get_basename()); child->set_name(path.get_file().get_basename());
Ref<Texture> texture = Object::cast_to<Texture>(Ref<Texture>(ResourceCache::get(path)).ptr()); Ref<Texture> texture = Ref<Texture>(Object::cast_to<Texture>(ResourceCache::get(path)));
Size2 texture_size = texture->get_size(); Size2 texture_size = texture->get_size();
editor_data->get_undo_redo().add_do_method(parent, "add_child", child); editor_data->get_undo_redo().add_do_method(parent, "add_child", child);

View file

@ -822,7 +822,7 @@ public:
} }
Node *another = node->get_node(node_path); Node *another = node->get_node(node_path);
if (!node) { if (!another) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD; r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Path does not lead Node!"; r_error_str = "Path does not lead Node!";
return 0; return 0;
@ -1596,7 +1596,7 @@ public:
} }
Node *another = node->get_node(node_path); Node *another = node->get_node(node_path);
if (!node) { if (!another) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD; r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Path does not lead Node!"; r_error_str = "Path does not lead Node!";
return 0; return 0;
@ -2241,7 +2241,7 @@ public:
} }
Node *another = node->get_node(node_path); Node *another = node->get_node(node_path);
if (!node) { if (!another) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD; r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = RTR("Path does not lead Node!"); r_error_str = RTR("Path does not lead Node!");
return 0; return 0;

View file

@ -2087,7 +2087,7 @@ public:
} }
Node *another = node->get_node(path); Node *another = node->get_node(path);
if (!node) { if (!another) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD; r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Path does not lead Node!"; r_error_str = "Path does not lead Node!";
return 0; return 0;

View file

@ -535,7 +535,7 @@ public:
} }
Node *another = node->get_node(node_path); Node *another = node->get_node(node_path);
if (!node) { if (!another) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD; r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Path does not lead Node!"; r_error_str = "Path does not lead Node!";
return 0; return 0;

View file

@ -116,24 +116,22 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
/** XLIB INITIALIZATION **/ /** XLIB INITIALIZATION **/
x11_display = XOpenDisplay(NULL); x11_display = XOpenDisplay(NULL);
char *modifiers = NULL;
Bool xkb_dar = False; Bool xkb_dar = False;
if (x11_display) { if (x11_display) {
XAutoRepeatOn(x11_display); XAutoRepeatOn(x11_display);
xkb_dar = XkbSetDetectableAutoRepeat(x11_display, True, NULL); xkb_dar = XkbSetDetectableAutoRepeat(x11_display, True, NULL);
}
char *modifiers = NULL; // Try to support IME if detectable auto-repeat is supported
if (xkb_dar == True) {
// Try to support IME if detectable auto-repeat is supported
if (xkb_dar == True) {
// Xutf8LookupString will be used later instead of XmbLookupString before // Xutf8LookupString will be used later instead of XmbLookupString before
// the multibyte sequences can be converted to unicode string. // the multibyte sequences can be converted to unicode string.
#ifdef X_HAVE_UTF8_STRING #ifdef X_HAVE_UTF8_STRING
modifiers = XSetLocaleModifiers(""); modifiers = XSetLocaleModifiers("");
#endif #endif
}
} }
if (modifiers == NULL) { if (modifiers == NULL) {
@ -141,8 +139,6 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
WARN_PRINT("IME is disabled"); WARN_PRINT("IME is disabled");
} }
modifiers = XSetLocaleModifiers("@im=none"); modifiers = XSetLocaleModifiers("@im=none");
}
if (modifiers == NULL) {
WARN_PRINT("Error setting locale modifiers"); WARN_PRINT("Error setting locale modifiers");
} }

View file

@ -58,6 +58,7 @@ Adapted from corresponding SDL 2.0 code.
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
#include "core/error_macros.h"
#include <dirent.h> #include <dirent.h>
#include <fcntl.h> #include <fcntl.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -254,9 +255,9 @@ bool PowerX11::GetPowerInfo_Linux_proc_acpi() {
this->power_state = POWERSTATE_UNKNOWN; this->power_state = POWERSTATE_UNKNOWN;
dirp->change_dir(proc_acpi_battery_path); dirp->change_dir(proc_acpi_battery_path);
dirp->list_dir_begin(); Error err = dirp->list_dir_begin();
if (dirp == NULL) { if (err != OK) {
return false; /* can't use this interface. */ return false; /* can't use this interface. */
} else { } else {
node = dirp->get_next(); node = dirp->get_next();
@ -268,8 +269,8 @@ bool PowerX11::GetPowerInfo_Linux_proc_acpi() {
} }
dirp->change_dir(proc_acpi_ac_adapter_path); dirp->change_dir(proc_acpi_ac_adapter_path);
dirp->list_dir_begin(); err = dirp->list_dir_begin();
if (dirp == NULL) { if (err != OK) {
return false; /* can't use this interface. */ return false; /* can't use this interface. */
} else { } else {
node = dirp->get_next(); node = dirp->get_next();
@ -438,9 +439,9 @@ bool PowerX11::GetPowerInfo_Linux_sys_class_power_supply(/*PowerState *state, in
DirAccess *dirp = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); DirAccess *dirp = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
dirp->change_dir(base); dirp->change_dir(base);
dirp->list_dir_begin(); Error err = dirp->list_dir_begin();
if (!dirp) { if (err != OK) {
return false; return false;
} }

View file

@ -215,8 +215,8 @@ void TextEdit::Text::_update_line_cache(int p_line) const {
const Map<int, TextEdit::Text::ColorRegionInfo> &TextEdit::Text::get_color_region_info(int p_line) { const Map<int, TextEdit::Text::ColorRegionInfo> &TextEdit::Text::get_color_region_info(int p_line) {
Map<int, ColorRegionInfo> *cri = NULL; static Map<int, ColorRegionInfo> cri;
ERR_FAIL_INDEX_V(p_line, text.size(), *cri); //enjoy your crash ERR_FAIL_INDEX_V(p_line, text.size(), cri);
if (text[p_line].width_cache == -1) { if (text[p_line].width_cache == -1) {
_update_line_cache(p_line); _update_line_cache(p_line);

View file

@ -2868,8 +2868,8 @@ TreeItem *Tree::create_item(TreeItem *p_parent) {
TreeItem *ti = memnew(TreeItem(this)); TreeItem *ti = memnew(TreeItem(this));
ti->cells.resize(columns.size());
ERR_FAIL_COND_V(!ti, NULL); ERR_FAIL_COND_V(!ti, NULL);
ti->cells.resize(columns.size());
if (p_parent) { if (p_parent) {

View file

@ -30,17 +30,14 @@
#include "broad_phase_basic.h" #include "broad_phase_basic.h"
#include "list.h" #include "list.h"
#include "print_string.h" #include "print_string.h"
BroadPhaseSW::ID BroadPhaseBasic::create(CollisionObjectSW *p_object_, int p_subindex) { BroadPhaseSW::ID BroadPhaseBasic::create(CollisionObjectSW *p_object, int p_subindex) {
if (p_object_ == NULL) { ERR_FAIL_COND_V(p_object == NULL, NULL);
ERR_FAIL_COND_V(p_object_ == NULL, 0);
}
current++; current++;
Element e; Element e;
e.owner = p_object_; e.owner = p_object;
e._static = false; e._static = false;
e.subindex = p_subindex; e.subindex = p_subindex;

View file

@ -1099,13 +1099,15 @@ void VisualServerCanvas::canvas_light_occluder_set_polygon(RID p_occluder, RID p
if (occluder->polygon.is_valid()) { if (occluder->polygon.is_valid()) {
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get(p_polygon); LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get(p_polygon);
if (!occluder_poly) if (!occluder_poly) {
occluder->polygon = RID(); occluder->polygon = RID();
ERR_FAIL_COND(!occluder_poly); ERR_FAIL_COND(!occluder_poly);
occluder_poly->owners.insert(occluder); } else {
occluder->polygon_buffer = occluder_poly->occluder; occluder_poly->owners.insert(occluder);
occluder->aabb_cache = occluder_poly->aabb; occluder->polygon_buffer = occluder_poly->occluder;
occluder->cull_cache = occluder_poly->cull_mode; occluder->aabb_cache = occluder_poly->aabb;
occluder->cull_cache = occluder_poly->cull_mode;
}
} }
} }
void VisualServerCanvas::canvas_light_occluder_set_transform(RID p_occluder, const Transform2D &p_xform) { void VisualServerCanvas::canvas_light_occluder_set_transform(RID p_occluder, const Transform2D &p_xform) {

View file

@ -1482,11 +1482,10 @@ void VisualServerScene::_render_scene(const Transform p_cam_transform, const Cam
if (light && p_shadow_atlas.is_valid() && VSG::storage->light_has_shadow(E->get()->base)) { if (light && p_shadow_atlas.is_valid() && VSG::storage->light_has_shadow(E->get()->base)) {
lights_with_shadow[directional_shadow_count++] = E->get(); lights_with_shadow[directional_shadow_count++] = E->get();
//add to list
directional_light_ptr[directional_light_count++] = light->instance;
} }
//add to list
directional_light_ptr[directional_light_count++] = light->instance;
} }
VSG::scene_render->set_directional_shadow_count(directional_shadow_count); VSG::scene_render->set_directional_shadow_count(directional_shadow_count);