diff --git a/src/OpenGL/compiler/ParseHelper.cpp b/src/OpenGL/compiler/ParseHelper.cpp
index 645f490..37d4eed 100644
--- a/src/OpenGL/compiler/ParseHelper.cpp
+++ b/src/OpenGL/compiler/ParseHelper.cpp
@@ -1170,12 +1170,12 @@
 
 	if (symbol == 0) {
 		error(line, "no matching overloaded function found", call->getName().c_str());
-		return 0;
+		return nullptr;
 	}
 
 	if (!symbol->isFunction()) {
 		error(line, "function name expected", call->getName().c_str());
-		return 0;
+		return nullptr;
 	}
 
 	return static_cast<const TFunction*>(symbol);
@@ -2088,7 +2088,7 @@
 			if(!argType.sameElementType(*type))
 			{
 				error(line, "Array constructor argument has an incorrect type", "Error");
-				return false;
+				return nullptr;
 			}
 		}
 	}
@@ -2104,7 +2104,7 @@
 				error(line, "Structure constructor arguments do not match structure fields", "Error");
 				recover();
 
-				return 0;
+				return nullptr;
 			}
 		}
 	}
@@ -2133,12 +2133,12 @@
 			returnVal = intermediate.parseConstTree(aggrNode->getLine(), aggrNode, unionArray, aggrNode->getOp(), type);
 		}
 		if (returnVal)
-			return 0;
+			return nullptr;
 
 		return intermediate.addConstantUnion(unionArray, type, aggrNode->getLine());
 	}
 
-	return 0;
+	return nullptr;
 }
 
 //
@@ -2164,7 +2164,7 @@
 		error(line, "Cannot offset into the vector", "Error");
 		recover();
 
-		return 0;
+		return nullptr;
 	}
 
 	ConstantUnion* constArray = new ConstantUnion[fields.num];
@@ -2215,7 +2215,7 @@
 		error(line, "Cannot offset into the matrix", "Error");
 		recover();
 
-		return 0;
+		return nullptr;
 	}
 
 	return typedNode;
@@ -2253,7 +2253,7 @@
 		error(line, "Cannot offset into the array", "Error");
 		recover();
 
-		return 0;
+		return nullptr;
 	}
 
 	return typedNode;
@@ -2288,7 +2288,7 @@
 		error(line, "Cannot offset into the structure", "Error");
 		recover();
 
-		return 0;
+		return nullptr;
 	}
 
 	return typedNode;
