{
                   vogl_printf("Taking snapshot on API call # %" PRIu64 "\n", apiCallNumber);
 
-                  *ppNewSnapshot = vogl_new(vogleditor_gl_state_snapshot, m_pTraceReplayer->snapshot_state());
-
-                  if (*ppNewSnapshot == NULL)
+                  vogl_gl_state_snapshot* pNewSnapshot = m_pTraceReplayer->snapshot_state();
+                  if (pNewSnapshot == NULL)
                   {
-                     vogl_error_printf("Snapshot failed!\n");
+                      vogl_error_printf("Taking new snapshot failed!\n");
                   }
                   else
                   {
-                      vogl_printf("Snapshot succeeded\n");
+                      vogl_printf("Taking snapshot succeeded\n");
+                      *ppNewSnapshot = vogl_new(vogleditor_gl_state_snapshot, pNewSnapshot);
+                      if (*ppNewSnapshot == NULL)
+                      {
+                         vogl_error_printf("Allocating memory for snapshot container failed!\n");
+                         vogl_delete(pNewSnapshot);
+                      }
                   }
 
                   bStatus = false;