An IndexOutOfRangeException just triggered in a little project I'm building, but why?
Here's the boolean condition:
(messages != null && messages.Rows[0] != null)
What I was trying to do is to check if these two objects were initialized, but as you already figured this happened all of a sudden.

It sounds like you need to check whether or not Rows is empty too. We don't actually know the type of Rows, but you might want:
if (messages != null && messages.Rows.Count > 0 && messages.Rows[0] != null)
Or you could use LINQ to get the first row if it exists, and check whether that's null:
if (messages != null && messages.Rows.FirstOrDefault() != null)
(That's assuming Rows implements IEnumerable<T> for some T.)
It's also possibly that Rows[0] will never be null, and you really only need to check whether the count is greater than 0:
if (messages != null && messages.Rows.Count > 0)
Or:
if (messages != null && messages.Rows.Any())
See more on this question at Stackoverflow