Mercurial > emacs
comparison src/fns.c @ 71979:dd7e7d68e3b0
(Flength): wrong_type_argument is no-return.
(hashfn_user_defined, Fmake_hash_table): Use signal_error.
(Fmd5): Use xsignal1.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Tue, 18 Jul 2006 13:28:02 +0000 |
parents | 1b88c4bbacbc |
children | ff262d47a1dc 8a8e69664178 |
comparison
equal
deleted
inserted
replaced
71978:6b2f430f5341 | 71979:dd7e7d68e3b0 |
---|---|
180 val = make_number (i); | 180 val = make_number (i); |
181 } | 181 } |
182 else if (NILP (sequence)) | 182 else if (NILP (sequence)) |
183 XSETFASTINT (val, 0); | 183 XSETFASTINT (val, 0); |
184 else | 184 else |
185 val = wrong_type_argument (Qsequencep, sequence); | 185 wrong_type_argument (Qsequencep, sequence); |
186 | 186 |
187 return val; | 187 return val; |
188 } | 188 } |
189 | 189 |
190 /* This does not check for quits. That is safe since it must terminate. */ | 190 /* This does not check for quits. That is safe since it must terminate. */ |
4485 | 4485 |
4486 args[0] = h->user_hash_function; | 4486 args[0] = h->user_hash_function; |
4487 args[1] = key; | 4487 args[1] = key; |
4488 hash = Ffuncall (2, args); | 4488 hash = Ffuncall (2, args); |
4489 if (!INTEGERP (hash)) | 4489 if (!INTEGERP (hash)) |
4490 Fsignal (Qerror, | 4490 signal_error ("Invalid hash code returned from user-supplied hash function", hash); |
4491 list2 (build_string ("Invalid hash code returned from \ | |
4492 user-supplied hash function"), | |
4493 hash)); | |
4494 return XUINT (hash); | 4491 return XUINT (hash); |
4495 } | 4492 } |
4496 | 4493 |
4497 | 4494 |
4498 /* Create and initialize a new hash table. | 4495 /* Create and initialize a new hash table. |
5244 /* See if it is a user-defined test. */ | 5241 /* See if it is a user-defined test. */ |
5245 Lisp_Object prop; | 5242 Lisp_Object prop; |
5246 | 5243 |
5247 prop = Fget (test, Qhash_table_test); | 5244 prop = Fget (test, Qhash_table_test); |
5248 if (!CONSP (prop) || !CONSP (XCDR (prop))) | 5245 if (!CONSP (prop) || !CONSP (XCDR (prop))) |
5249 Fsignal (Qerror, list2 (build_string ("Invalid hash table test"), | 5246 signal_error ("Invalid hash table test", test); |
5250 test)); | |
5251 user_test = XCAR (prop); | 5247 user_test = XCAR (prop); |
5252 user_hash = XCAR (XCDR (prop)); | 5248 user_hash = XCAR (XCDR (prop)); |
5253 } | 5249 } |
5254 else | 5250 else |
5255 user_test = user_hash = Qnil; | 5251 user_test = user_hash = Qnil; |
5258 i = get_key_arg (QCsize, nargs, args, used); | 5254 i = get_key_arg (QCsize, nargs, args, used); |
5259 size = i < 0 ? Qnil : args[i]; | 5255 size = i < 0 ? Qnil : args[i]; |
5260 if (NILP (size)) | 5256 if (NILP (size)) |
5261 size = make_number (DEFAULT_HASH_SIZE); | 5257 size = make_number (DEFAULT_HASH_SIZE); |
5262 else if (!INTEGERP (size) || XINT (size) < 0) | 5258 else if (!INTEGERP (size) || XINT (size) < 0) |
5263 Fsignal (Qerror, | 5259 signal_error ("Invalid hash table size", size); |
5264 list2 (build_string ("Invalid hash table size"), | |
5265 size)); | |
5266 | 5260 |
5267 /* Look for `:rehash-size SIZE'. */ | 5261 /* Look for `:rehash-size SIZE'. */ |
5268 i = get_key_arg (QCrehash_size, nargs, args, used); | 5262 i = get_key_arg (QCrehash_size, nargs, args, used); |
5269 rehash_size = i < 0 ? make_float (DEFAULT_REHASH_SIZE) : args[i]; | 5263 rehash_size = i < 0 ? make_float (DEFAULT_REHASH_SIZE) : args[i]; |
5270 if (!NUMBERP (rehash_size) | 5264 if (!NUMBERP (rehash_size) |
5271 || (INTEGERP (rehash_size) && XINT (rehash_size) <= 0) | 5265 || (INTEGERP (rehash_size) && XINT (rehash_size) <= 0) |
5272 || XFLOATINT (rehash_size) <= 1.0) | 5266 || XFLOATINT (rehash_size) <= 1.0) |
5273 Fsignal (Qerror, | 5267 signal_error ("Invalid hash table rehash size", rehash_size); |
5274 list2 (build_string ("Invalid hash table rehash size"), | |
5275 rehash_size)); | |
5276 | 5268 |
5277 /* Look for `:rehash-threshold THRESHOLD'. */ | 5269 /* Look for `:rehash-threshold THRESHOLD'. */ |
5278 i = get_key_arg (QCrehash_threshold, nargs, args, used); | 5270 i = get_key_arg (QCrehash_threshold, nargs, args, used); |
5279 rehash_threshold = i < 0 ? make_float (DEFAULT_REHASH_THRESHOLD) : args[i]; | 5271 rehash_threshold = i < 0 ? make_float (DEFAULT_REHASH_THRESHOLD) : args[i]; |
5280 if (!FLOATP (rehash_threshold) | 5272 if (!FLOATP (rehash_threshold) |
5281 || XFLOATINT (rehash_threshold) <= 0.0 | 5273 || XFLOATINT (rehash_threshold) <= 0.0 |
5282 || XFLOATINT (rehash_threshold) > 1.0) | 5274 || XFLOATINT (rehash_threshold) > 1.0) |
5283 Fsignal (Qerror, | 5275 signal_error ("Invalid hash table rehash threshold", rehash_threshold); |
5284 list2 (build_string ("Invalid hash table rehash threshold"), | |
5285 rehash_threshold)); | |
5286 | 5276 |
5287 /* Look for `:weakness WEAK'. */ | 5277 /* Look for `:weakness WEAK'. */ |
5288 i = get_key_arg (QCweakness, nargs, args, used); | 5278 i = get_key_arg (QCweakness, nargs, args, used); |
5289 weak = i < 0 ? Qnil : args[i]; | 5279 weak = i < 0 ? Qnil : args[i]; |
5290 if (EQ (weak, Qt)) | 5280 if (EQ (weak, Qt)) |
5292 if (!NILP (weak) | 5282 if (!NILP (weak) |
5293 && !EQ (weak, Qkey) | 5283 && !EQ (weak, Qkey) |
5294 && !EQ (weak, Qvalue) | 5284 && !EQ (weak, Qvalue) |
5295 && !EQ (weak, Qkey_or_value) | 5285 && !EQ (weak, Qkey_or_value) |
5296 && !EQ (weak, Qkey_and_value)) | 5286 && !EQ (weak, Qkey_and_value)) |
5297 Fsignal (Qerror, list2 (build_string ("Invalid hash table weakness"), | 5287 signal_error ("Invalid hash table weakness", weak); |
5298 weak)); | |
5299 | 5288 |
5300 /* Now, all args should have been used up, or there's a problem. */ | 5289 /* Now, all args should have been used up, or there's a problem. */ |
5301 for (i = 0; i < nargs; ++i) | 5290 for (i = 0; i < nargs; ++i) |
5302 if (!used[i]) | 5291 if (!used[i]) |
5303 Fsignal (Qerror, | 5292 signal_error ("Invalid argument list", args[i]); |
5304 list2 (build_string ("Invalid argument list"), args[i])); | |
5305 | 5293 |
5306 return make_hash_table (test, size, rehash_size, rehash_threshold, weak, | 5294 return make_hash_table (test, size, rehash_size, rehash_threshold, weak, |
5307 user_test, user_hash); | 5295 user_test, user_hash); |
5308 } | 5296 } |
5309 | 5297 |
5550 /* Invalid coding system. */ | 5538 /* Invalid coding system. */ |
5551 | 5539 |
5552 if (!NILP (noerror)) | 5540 if (!NILP (noerror)) |
5553 coding_system = Qraw_text; | 5541 coding_system = Qraw_text; |
5554 else | 5542 else |
5555 while (1) | 5543 xsignal1 (Qcoding_system_error, coding_system); |
5556 Fsignal (Qcoding_system_error, Fcons (coding_system, Qnil)); | |
5557 } | 5544 } |
5558 | 5545 |
5559 if (STRING_MULTIBYTE (object)) | 5546 if (STRING_MULTIBYTE (object)) |
5560 object = code_convert_string1 (object, coding_system, Qnil, 1); | 5547 object = code_convert_string1 (object, coding_system, Qnil, 1); |
5561 | 5548 |
5685 /* Invalid coding system. */ | 5672 /* Invalid coding system. */ |
5686 | 5673 |
5687 if (!NILP (noerror)) | 5674 if (!NILP (noerror)) |
5688 coding_system = Qraw_text; | 5675 coding_system = Qraw_text; |
5689 else | 5676 else |
5690 while (1) | 5677 xsignal1 (Qcoding_system_error, coding_system); |
5691 Fsignal (Qcoding_system_error, Fcons (coding_system, Qnil)); | |
5692 } | 5678 } |
5693 } | 5679 } |
5694 | 5680 |
5695 object = make_buffer_string (b, e, 0); | 5681 object = make_buffer_string (b, e, 0); |
5696 if (prev != current_buffer) | 5682 if (prev != current_buffer) |