diff options
| author | Jim Blandy | 1992-08-19 06:19:22 +0000 |
|---|---|---|
| committer | Jim Blandy | 1992-08-19 06:19:22 +0000 |
| commit | bc540f9f00ae5eb6392b937d3d6cd22298aa9bd9 (patch) | |
| tree | f62dac2897a52fe85120f7c34ede5dc7440e4a12 /src | |
| parent | 0fa3ba92d87d3825d75109ea2b7f2bb2bab18d74 (diff) | |
| download | emacs-bc540f9f00ae5eb6392b937d3d6cd22298aa9bd9.tar.gz emacs-bc540f9f00ae5eb6392b937d3d6cd22298aa9bd9.zip | |
* data.c [USG] (Frem): Call fmod, rather than drem. Rah.
* data.c (store_symval_forwarding): When storing through a
Lisp_Buffer_Objfwd, check if the slot requires a particular type,
and report an error if the types clash.
Diffstat (limited to 'src')
| -rw-r--r-- | src/data.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/data.c b/src/data.c index f963a323d7d..9b45fc61c30 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -604,8 +604,19 @@ store_symval_forwarding (sym, valcontents, newval) | |||
| 604 | break; | 604 | break; |
| 605 | 605 | ||
| 606 | case Lisp_Buffer_Objfwd: | 606 | case Lisp_Buffer_Objfwd: |
| 607 | *(Lisp_Object *)(XUINT (valcontents) + (char *)current_buffer) = newval; | 607 | { |
| 608 | break; | 608 | unsigned int offset = XUINT (valcontents); |
| 609 | Lisp_Object type = | ||
| 610 | *(Lisp_Object *)(offset + (char *)&buffer_local_types); | ||
| 611 | |||
| 612 | if (! NILP (type) && ! NILP (newval) | ||
| 613 | && XTYPE (newval) != XINT (type)) | ||
| 614 | buffer_slot_type_mismatch (valcontents, newval); | ||
| 615 | |||
| 616 | *(Lisp_Object *)(XUINT (valcontents) + (char *)current_buffer) | ||
| 617 | = newval; | ||
| 618 | break; | ||
| 619 | } | ||
| 609 | 620 | ||
| 610 | default: | 621 | default: |
| 611 | valcontents = XSYMBOL (sym)->value; | 622 | valcontents = XSYMBOL (sym)->value; |
| @@ -1638,7 +1649,11 @@ Both must be numbers or markers.") | |||
| 1638 | 1649 | ||
| 1639 | f1 = XTYPE (num1) == Lisp_Float ? XFLOAT (num1)->data : XINT (num1); | 1650 | f1 = XTYPE (num1) == Lisp_Float ? XFLOAT (num1)->data : XINT (num1); |
| 1640 | f2 = XTYPE (num2) == Lisp_Float ? XFLOAT (num2)->data : XINT (num2); | 1651 | f2 = XTYPE (num2) == Lisp_Float ? XFLOAT (num2)->data : XINT (num2); |
| 1652 | #ifdef USG | ||
| 1653 | f1 = fmod (f1, f2); | ||
| 1654 | #else | ||
| 1641 | f1 = drem (f1, f2); | 1655 | f1 = drem (f1, f2); |
| 1656 | #endif | ||
| 1642 | if (f1 < 0) | 1657 | if (f1 < 0) |
| 1643 | f1 += f2; | 1658 | f1 += f2; |
| 1644 | return (make_float (f1)); | 1659 | return (make_float (f1)); |