[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mgp-users-jp 00588] Real number in font size bug



京大数研のGarrigueです。

magicpoint-1.06a をDEC alphaで試したら、見事にfloating point exception
でこけました。調べて見たら、フォントサイズに実数を使うパッチが中途半端
なせいで、初期値は整数のままでした。

このパッチで治ります。

ちなみにfreetypeを使えないでいますが、それは原因不明です。
エラーはfreetypeのライブラリにかなり深い所で起こりますので、調べにくい。
(ライブラリ自体はenlightenmentで使えていますけれども)

		────────────────────────────
		Jacques Garrigue/雅利賀  惹玖   京都大学 数理解析研究所
		garrigue@kurims.kyoto-u.ac.jp Tel.(075)753-7211/Fax.7272
			   http://wwwfun.kurims.kyoto-u.ac.jp/~garrigue/
diff -rc magicpoint-1.06a/globals.c magicpoint-1.06a-patched/globals.c
*** magicpoint-1.06a/globals.c	Sun Jul  4 00:52:43 1999
--- magicpoint-1.06a-patched/globals.c	Wed Aug 18 10:34:52 1999
***************
*** 92,98 ****
  /*CTL*/	{ CTL_NOOP,		T_VOID,	"noop", 4 },
  /*CTL*/	{ CTL_DEFAULT,		T_INT,	"default", 7 },
  /*CTL*/	{ CTL_TAB,		T_SP,	"tab", 3 },
! /*CTL*/	{ CTL_SIZE,		T_INT,	"size", 4 },
  /*CTL*/	{ CTL_FORE,		T_LONG,	"fore", 4 },
  /*CTL*/	{ CTL_BACK,		T_LONG,	"back", 4 },
  /*CTL*/	{ CTL_LEFT,		T_VOID,	"left", 4 },
--- 92,98 ----
  /*CTL*/	{ CTL_NOOP,		T_VOID,	"noop", 4 },
  /*CTL*/	{ CTL_DEFAULT,		T_INT,	"default", 7 },
  /*CTL*/	{ CTL_TAB,		T_SP,	"tab", 3 },
! /*CTL*/	{ CTL_SIZE,		T_DOUBLE, "size", 4 },
  /*CTL*/	{ CTL_FORE,		T_LONG,	"fore", 4 },
  /*CTL*/	{ CTL_BACK,		T_LONG,	"back", 4 },
  /*CTL*/	{ CTL_LEFT,		T_VOID,	"left", 4 },
diff -rc magicpoint-1.06a/mgp.h magicpoint-1.06a-patched/mgp.h
*** magicpoint-1.06a/mgp.h	Sun Jul  4 00:52:44 1999
--- magicpoint-1.06a-patched/mgp.h	Wed Aug 18 10:39:21 1999
***************
*** 329,334 ****
--- 329,335 ----
  #define T_STR2	'C'
  #define T_INT	'i'
  #define T_LONG	'l'
+ #define T_DOUBLE 'f'
  #define T_SP	'x'
  #define T_VOID	'-'
          char *ctl_string;
diff -rc magicpoint-1.06a/parse.c magicpoint-1.06a-patched/parse.c
*** magicpoint-1.06a/parse.c	Sat Jun 26 22:05:07 1999
--- magicpoint-1.06a-patched/parse.c	Wed Aug 18 10:52:29 1999
***************
*** 786,792 ****
  	tmplong[2] = ctlalloc1(CTL_CCOLOR);
  	get_color(DEFAULT_FORE, &tmplong[2]->ctl_value);
  	tmpint[0] = ctlalloc1(CTL_SIZE);
! 	tmpint[0]->cti_value = DEFAULT_CHARSIZE;
  	tmpint[1] = ctlalloc1(CTL_HGAP);
  	tmpint[1]->cti_value = DEFAULT_HGAP;
  	tmpint[2] = ctlalloc1(CTL_VGAP);
--- 786,792 ----
  	tmplong[2] = ctlalloc1(CTL_CCOLOR);
  	get_color(DEFAULT_FORE, &tmplong[2]->ctl_value);
  	tmpint[0] = ctlalloc1(CTL_SIZE);
! 	tmpint[0]->ctf_value = DEFAULT_CHARSIZE;
  	tmpint[1] = ctlalloc1(CTL_HGAP);
  	tmpint[1]->cti_value = DEFAULT_HGAP;
  	tmpint[2] = ctlalloc1(CTL_VGAP);
***************
*** 832,838 ****
  		if (!tmpint[i])
  			continue;
  		cp->ct_next = ctlalloc1(tmpint[i]->ct_op);
! 		cp->ct_next->cti_value = tmpint[i]->cti_value;
  		cp = cp->ct_next;
  	}
  	for (i = 0; i < 10; i++) {
--- 832,838 ----
  		if (!tmpint[i])
  			continue;
  		cp->ct_next = ctlalloc1(tmpint[i]->ct_op);
! 		cp->ct_next->ct_val = tmpint[i]->ct_val;
  		cp = cp->ct_next;
  	}
  	for (i = 0; i < 10; i++) {
***************
*** 935,941 ****
  			if (!tmpint[i])
  				continue;
  			cp->ct_next = ctlalloc1(tmpint[i]->ct_op);
! 			cp->ct_next->cti_value = tmpint[i]->cti_value;
  			cp = cp->ct_next;
  		}
  		for (i = 0; i < 10; i++) {
--- 935,941 ----
  			if (!tmpint[i])
  				continue;
  			cp->ct_next = ctlalloc1(tmpint[i]->ct_op);
! 			cp->ct_next->ct_val = tmpint[i]->ct_val;
  			cp = cp->ct_next;
  		}
  		for (i = 0; i < 10; i++) {
***************
*** 1250,1255 ****
--- 1250,1258 ----
  	case T_LONG:
  		fprintf(stderr, "#%lx", p->ctl_value);
  		break;
+ 	case T_DOUBLE:
+ 	        fprintf(stderr, "%#g", p->ctf_value);
+ 	        break;
  	case T_VOID:
  		break;
  	case T_SP:
***************
*** 1490,1495 ****
--- 1493,1500 ----
  		return (a->cti_value == b->cti_value) ? 0 : 1;
  	case T_LONG:
  		return (a->ctl_value == b->ctl_value) ? 0 : 1;
+ 	case T_DOUBLE:
+ 		return (a->ctf_value == b->ctf_value) ? 0 : 1;
  	case T_VOID:
  		return 0;
  	case T_SP: