]> source.dussan.org Git - tigervnc.git/commitdiff
Use exceptions rather than asserts for for "normal" errors 47/head
authorPierre Ossman <ossman@cendio.se>
Fri, 10 Oct 2014 11:37:35 +0000 (13:37 +0200)
committerPierre Ossman <ossman@cendio.se>
Fri, 10 Oct 2014 11:37:35 +0000 (13:37 +0200)
Although these are rare, they are still not indicative of bugs so
an exception (which ends up in the log and might also be shown to
the user) is more appropriate than an assert. Asserts should only
be used to catch blatant API misuse and similar.

vncviewer/OSXPixelBuffer.cxx
vncviewer/Viewport.cxx
vncviewer/X11PixelBuffer.cxx

index a3ee9d0ddb9b613a7609605d9e5d2febfe4155b4..e9100f270d223bc7288a113ad5128a368f85e57a 100644 (file)
@@ -20,8 +20,6 @@
 #include <config.h>
 #endif
 
-#include <assert.h>
-
 #include <ApplicationServices/ApplicationServices.h>
 
 #include <FL/Fl_Window.H>
@@ -50,13 +48,14 @@ OSXPixelBuffer::OSXPixelBuffer(int width, int height) :
     throw rfb::Exception(_("Not enough memory for framebuffer"));
 
   lut = CGColorSpaceCreateDeviceRGB();
-  assert(lut);
+  if (!lut)
+    throw rfb::Exception(_("Could not create framebuffer device"));
 
   bitmap = CGBitmapContextCreate(data, width, height, 8, width*4, lut,
                                  kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Little);
-  assert(bitmap);
-
   CGColorSpaceRelease(lut);
+  if (!bitmap)
+    throw rfb::Exception(_("Could not create framebuffer bitmap"));
 }
 
 
index 66a784125ea99c7d7c55894a5c6f6e143f41b06c..4daff16435dc088f412aa8e7cd6f873596273760 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <rfb/CMsgWriter.h>
 #include <rfb/LogWriter.h>
+#include <rfb/Exception.h>
 
 // FLTK can pull in the X11 headers on some systems
 #ifndef XK_VoidSymbol
@@ -452,6 +453,8 @@ PlatformPixelBuffer* Viewport::createFramebuffer(int w, int h)
     fb = new X11PixelBuffer(w, h);
 #endif
   } catch (rdr::Exception& e) {
+    vlog.error(_("Unable to create platform specific framebuffer: %s"), e.str());
+    vlog.error(_("Using platform independent framebuffer"));
     fb = new FLTKPixelBuffer(w, h);
   }
 
index d84357c42d5927fe7938c2d8bce70f3f03de0d9a..59b90e2cbf25a96e24ebccacdd87772e687bff3d 100644 (file)
@@ -21,7 +21,6 @@
 #include <config.h>
 #endif
 
-#include <assert.h>
 #include <stdlib.h>
 
 #include <FL/x.H>
@@ -104,10 +103,12 @@ X11PixelBuffer::X11PixelBuffer(int width, int height) :
   if (!setupShm()) {
     xim = XCreateImage(fl_display, fl_visual->visual, fl_visual->depth,
                        ZPixmap, 0, 0, width, height, BitmapPad(fl_display), 0);
-    assert(xim);
+    if (!xim)
+      throw rfb::Exception(_("Could not create framebuffer image"));
 
     xim->data = (char*)malloc(xim->bytes_per_line * xim->height);
-    assert(xim->data);
+    if (!xim->data)
+      throw rfb::Exception(_("Not enough memory for framebuffer"));
   }
 
   data = (rdr::U8*)xim->data;