aboutsummaryrefslogtreecommitdiffstats
path: root/src/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/data.c')
-rw-r--r--src/data.c71
1 files changed, 17 insertions, 54 deletions
diff --git a/src/data.c b/src/data.c
index 8b8015bb002..0b46fceb298 100644
--- a/src/data.c
+++ b/src/data.c
@@ -113,18 +113,13 @@ Lisp_Object
113wrong_type_argument (predicate, value) 113wrong_type_argument (predicate, value)
114 register Lisp_Object predicate, value; 114 register Lisp_Object predicate, value;
115{ 115{
116 register Lisp_Object tem; 116 /* If VALUE is not even a valid Lisp object, abort here
117 do 117 where we can get a backtrace showing where it came from. */
118 { 118 if ((unsigned int) XGCTYPE (value) >= Lisp_Type_Limit)
119 /* If VALUE is not even a valid Lisp object, abort here 119 abort ();
120 where we can get a backtrace showing where it came from. */ 120
121 if ((unsigned int) XGCTYPE (value) >= Lisp_Type_Limit) 121 Fsignal (Qwrong_type_argument, list2 (predicate, value));
122 abort ();
123 122
124 value = Fsignal (Qwrong_type_argument, Fcons (predicate, Fcons (value, Qnil)));
125 tem = call1 (predicate, value);
126 }
127 while (NILP (tem));
128 /* This function is marked as NO_RETURN, gcc would warn if it has a 123 /* This function is marked as NO_RETURN, gcc would warn if it has a
129 return statement or if falls off the function. Other compilers 124 return statement or if falls off the function. Other compilers
130 warn if no return statement is present. */ 125 warn if no return statement is present. */
@@ -394,8 +389,7 @@ DEFUN ("arrayp", Farrayp, Sarrayp, 1, 1, 0,
394 (object) 389 (object)
395 Lisp_Object object; 390 Lisp_Object object;
396{ 391{
397 if (VECTORP (object) || STRINGP (object) 392 if (ARRAYP (object))
398 || CHAR_TABLE_P (object) || BOOL_VECTOR_P (object))
399 return Qt; 393 return Qt;
400 return Qnil; 394 return Qnil;
401} 395}
@@ -405,8 +399,7 @@ DEFUN ("sequencep", Fsequencep, Ssequencep, 1, 1, 0,
405 (object) 399 (object)
406 register Lisp_Object object; 400 register Lisp_Object object;
407{ 401{
408 if (CONSP (object) || NILP (object) || VECTORP (object) || STRINGP (object) 402 if (CONSP (object) || NILP (object) || ARRAYP (object))
409 || CHAR_TABLE_P (object) || BOOL_VECTOR_P (object))
410 return Qt; 403 return Qt;
411 return Qnil; 404 return Qnil;
412} 405}
@@ -536,15 +529,7 @@ Lisp concepts such as car, cdr, cons cell and list. */)
536 (list) 529 (list)
537 register Lisp_Object list; 530 register Lisp_Object list;
538{ 531{
539 while (1) 532 return CAR (list);
540 {
541 if (CONSP (list))
542 return XCAR (list);
543 else if (EQ (list, Qnil))
544 return Qnil;
545 else
546 list = wrong_type_argument (Qlistp, list);
547 }
548} 533}
549 534
550DEFUN ("car-safe", Fcar_safe, Scar_safe, 1, 1, 0, 535DEFUN ("car-safe", Fcar_safe, Scar_safe, 1, 1, 0,
@@ -552,10 +537,7 @@ DEFUN ("car-safe", Fcar_safe, Scar_safe, 1, 1, 0,
552 (object) 537 (object)
553 Lisp_Object object; 538 Lisp_Object object;
554{ 539{
555 if (CONSP (object)) 540 return CAR_SAFE (object);
556 return XCAR (object);
557 else
558 return Qnil;
559} 541}
560 542
561DEFUN ("cdr", Fcdr, Scdr, 1, 1, 0, 543DEFUN ("cdr", Fcdr, Scdr, 1, 1, 0,
@@ -567,15 +549,7 @@ Lisp concepts such as cdr, car, cons cell and list. */)
567 (list) 549 (list)
568 register Lisp_Object list; 550 register Lisp_Object list;
569{ 551{
570 while (1) 552 return CDR (list);
571 {
572 if (CONSP (list))
573 return XCDR (list);
574 else if (EQ (list, Qnil))
575 return Qnil;
576 else
577 list = wrong_type_argument (Qlistp, list);
578 }
579} 553}
580 554
581DEFUN ("cdr-safe", Fcdr_safe, Scdr_safe, 1, 1, 0, 555DEFUN ("cdr-safe", Fcdr_safe, Scdr_safe, 1, 1, 0,
@@ -583,10 +557,7 @@ DEFUN ("cdr-safe", Fcdr_safe, Scdr_safe, 1, 1, 0,
583 (object) 557 (object)
584 Lisp_Object object; 558 Lisp_Object object;
585{ 559{
586 if (CONSP (object)) 560 return CDR_SAFE (object);
587 return XCDR (object);
588 else
589 return Qnil;
590} 561}
591 562
592DEFUN ("setcar", Fsetcar, Ssetcar, 2, 2, 0, 563DEFUN ("setcar", Fsetcar, Ssetcar, 2, 2, 0,
@@ -594,9 +565,7 @@ DEFUN ("setcar", Fsetcar, Ssetcar, 2, 2, 0,
594 (cell, newcar) 565 (cell, newcar)
595 register Lisp_Object cell, newcar; 566 register Lisp_Object cell, newcar;
596{ 567{
597 if (!CONSP (cell)) 568 CHECK_CONS (cell);
598 cell = wrong_type_argument (Qconsp, cell);
599
600 CHECK_IMPURE (cell); 569 CHECK_IMPURE (cell);
601 XSETCAR (cell, newcar); 570 XSETCAR (cell, newcar);
602 return newcar; 571 return newcar;
@@ -607,9 +576,7 @@ DEFUN ("setcdr", Fsetcdr, Ssetcdr, 2, 2, 0,
607 (cell, newcdr) 576 (cell, newcdr)
608 register Lisp_Object cell, newcdr; 577 register Lisp_Object cell, newcdr;
609{ 578{
610 if (!CONSP (cell)) 579 CHECK_CONS (cell);
611 cell = wrong_type_argument (Qconsp, cell);
612
613 CHECK_IMPURE (cell); 580 CHECK_IMPURE (cell);
614 XSETCDR (cell, newcdr); 581 XSETCDR (cell, newcdr);
615 return newcdr; 582 return newcdr;
@@ -764,8 +731,7 @@ function with `&rest' args, or `unevalled' for a special form. */)
764 Lisp_Object subr; 731 Lisp_Object subr;
765{ 732{
766 short minargs, maxargs; 733 short minargs, maxargs;
767 if (!SUBRP (subr)) 734 CHECK_SUBR (subr);
768 wrong_type_argument (Qsubrp, subr);
769 minargs = XSUBR (subr)->min_args; 735 minargs = XSUBR (subr)->min_args;
770 maxargs = XSUBR (subr)->max_args; 736 maxargs = XSUBR (subr)->max_args;
771 if (maxargs == MANY) 737 if (maxargs == MANY)
@@ -783,8 +749,7 @@ SUBR must be a built-in function. */)
783 Lisp_Object subr; 749 Lisp_Object subr;
784{ 750{
785 const char *name; 751 const char *name;
786 if (!SUBRP (subr)) 752 CHECK_SUBR (subr);
787 wrong_type_argument (Qsubrp, subr);
788 name = XSUBR (subr)->symbol_name; 753 name = XSUBR (subr)->symbol_name;
789 return make_string (name, strlen (name)); 754 return make_string (name, strlen (name));
790} 755}
@@ -2116,9 +2081,7 @@ bool-vector. IDX starts at 0. */)
2116 2081
2117 CHECK_NUMBER (idx); 2082 CHECK_NUMBER (idx);
2118 idxval = XINT (idx); 2083 idxval = XINT (idx);
2119 if (!VECTORP (array) && !STRINGP (array) && !BOOL_VECTOR_P (array) 2084 CHECK_ARRAY (array, Qarrayp);
2120 && ! CHAR_TABLE_P (array))
2121 array = wrong_type_argument (Qarrayp, array);
2122 CHECK_IMPURE (array); 2085 CHECK_IMPURE (array);
2123 2086
2124 if (VECTORP (array)) 2087 if (VECTORP (array))