[Mono-bugs] [Bug 56691][Nor] New - libgdiplus expects X display
bugzilla-daemon@bugzilla.ximian.com
bugzilla-daemon@bugzilla.ximian.com
Thu, 8 Apr 2004 06:51:56 -0400 (EDT)
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by ximian@divinehawk.com.
http://bugzilla.ximian.com/show_bug.cgi?id=56691
--- shadow/56691 2004-04-08 06:51:56.000000000 -0400
+++ shadow/56691.tmp.8243 2004-04-08 06:51:56.000000000 -0400
@@ -0,0 +1,53 @@
+Bug#: 56691
+Product: Mono: Runtime
+Version: unspecified
+OS:
+OS Details:
+Status: NEW
+Resolution:
+Severity:
+Priority: Normal
+Component: misc
+AssignedTo: mono-bugs@ximian.com
+ReportedBy: ximian@divinehawk.com
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+URL:
+Cc:
+Summary: libgdiplus expects X display
+
+Trying to call Image.FromFile you'll get the following output:
+
+Bitmap.InitFromStream
+Stride: 960
+Scan0: 42465008
+System.NullReferenceException: A null value was found where an object
+instance was required.
+in (unmanaged) /usr/X11R6/lib/libX11.so.6(XGetDefault+0x34) [0x423a28b4]
+in (unmanaged) /usr/lib/libgdiplus.so(gdip_get_display_dpi+0x4d) [0x421c5b0d]
+in (unmanaged) /usr/lib/libgdiplus.so(gdip_image_init+0x49) [0x421cc779]
+in (unmanaged) /usr/lib/libgdiplus.so(gdip_bitmap_init+0x22) [0x421c3892]
+in (unmanaged) /usr/lib/libgdiplus.so(gdip_bitmap_new+0x2d) [0x421c396d]
+in (unmanaged) /usr/lib/libgdiplus.so(GdipCreateBitmapFromScan0+0x89)
+[0x421c3db9]
+in <0x00044> (wrapper managed-to-native)
+System.Drawing.GDIPlus:GdipCreateBitmapFromScan0
+(int,int,int,System.Drawing.Imaging.PixelFormat,intptr,intptr&)
+in <0x001dc> System.Drawing.Bitmap:InitFromStream (System.IO.Stream)
+in <0x00056> (wrapper remoting-invoke-with-check)
+System.Drawing.Bitmap:InitFromStream (System.IO.Stream)
+in <0x0004f> System.Drawing.Bitmap:.ctor (string,bool)
+in <0x00012> System.Drawing.Bitmap:.ctor (string)
+in <0x00056> (wrapper remoting-invoke-with-check)
+System.Drawing.Bitmap:.ctor (string)
+in <0x00020> System.Drawing.Image:FromFile (string)
+in <0x00020> FOTQ.Capture:GetImage ()
+
+As you can see the problem is in gdip_get_display_dpi:
+Display* display=XOpenDisplay(NULL);
+The return value of XOpenDisplay is not checked.
+
+The result is that if you don't have a valid X server to connect to then
+you will not be able to use System.Drawing.
+
+The attached patch fixes gdip_get_display_dpi().