@@ -256,33 +256,37 @@ public FontData(FontData fontData) {
256256 if (fontData == null )
257257 SWT .error (SWT .ERROR_NULL_ARGUMENT );
258258
259- if (fontData .data != null ) {
260- LOGFONT newData = new LOGFONT ();
261- setHeight (fontData .getHeightF ());
262- newData .lfHeight = fontData .data .lfHeight ;
263- newData .lfWidth = fontData .data .lfWidth ;
264- newData .lfEscapement = fontData .data .lfEscapement ;
265- newData .lfOrientation = fontData .data .lfOrientation ;
266- newData .lfWeight = fontData .data .lfWeight ;
267- newData .lfItalic = fontData .data .lfItalic ;
268- newData .lfUnderline = fontData .data .lfUnderline ;
269- newData .lfStrikeOut = fontData .data .lfStrikeOut ;
270- newData .lfCharSet = fontData .data .lfCharSet ;
271- newData .lfOutPrecision = fontData .data .lfOutPrecision ;
272- newData .lfClipPrecision = fontData .data .lfClipPrecision ;
273- newData .lfQuality = fontData .data .lfQuality ;
274- newData .lfPitchAndFamily = fontData .data .lfPitchAndFamily ;
275-
276- // Deep copy of the char array lfFaceName
277- if (fontData .data .lfFaceName != null ) {
278- newData .lfFaceName = new char [fontData .data .lfFaceName .length ];
279- System .arraycopy (fontData .data .lfFaceName , 0 , newData .lfFaceName , 0 , fontData .data .lfFaceName .length );
280- }
259+ this .height = fontData .height ;
260+ this .lang = fontData .lang ;
261+ this .country = fontData .country ;
262+ this .variant = fontData .variant ;
263+ this .data = cloneLogFont (fontData );
264+ }
281265
282- this .data = newData ;
283- } else {
284- this .data = null ;
266+ private static LOGFONT cloneLogFont (FontData fontData ) {
267+ if (fontData .data == null ) return null ;
268+
269+ LOGFONT newData = new LOGFONT ();
270+ newData .lfHeight = fontData .data .lfHeight ;
271+ newData .lfWidth = fontData .data .lfWidth ;
272+ newData .lfEscapement = fontData .data .lfEscapement ;
273+ newData .lfOrientation = fontData .data .lfOrientation ;
274+ newData .lfWeight = fontData .data .lfWeight ;
275+ newData .lfItalic = fontData .data .lfItalic ;
276+ newData .lfUnderline = fontData .data .lfUnderline ;
277+ newData .lfStrikeOut = fontData .data .lfStrikeOut ;
278+ newData .lfCharSet = fontData .data .lfCharSet ;
279+ newData .lfOutPrecision = fontData .data .lfOutPrecision ;
280+ newData .lfClipPrecision = fontData .data .lfClipPrecision ;
281+ newData .lfQuality = fontData .data .lfQuality ;
282+ newData .lfPitchAndFamily = fontData .data .lfPitchAndFamily ;
283+
284+ // Deep copy of the char array lfFaceName
285+ if (fontData .data .lfFaceName != null ) {
286+ newData .lfFaceName = new char [fontData .data .lfFaceName .length ];
287+ System .arraycopy (fontData .data .lfFaceName , 0 , newData .lfFaceName , 0 , fontData .data .lfFaceName .length );
285288 }
289+ return newData ;
286290}
287291
288292
0 commit comments