Changeset 730 for to-imperative/trunk/library/Convert/to_int.cc
- Timestamp:
- May 16, 2003, 11:37:44 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
to-imperative/trunk/library/Convert/to_int.cc
r723 r730 5 5 6 6 #include <rf_core.hh> 7 #include <rf_short_int.hh>8 7 9 8 namespace refal … … 23 22 24 23 if (t->get_type() == type_char) { 25 if (((Char*)t)->to_wchar_t() == '-') 26 flag = -1; 27 28 if (((Char*)t)->to_wchar_t() == '+') 29 flag = 1; 24 if (((Char*)t)->to_wchar_t() == '-') { 25 flag = -1; t++; 26 } 27 else 28 if (((Char*)t)->to_wchar_t() == '+') { 29 flag = 1; t++; 30 } 30 31 }; 31 32 32 //добавить для Word проверку первого символа 33 if ((t->get_type() == type_word) ) 34 if (((Word*)t)->is_number() == -1) 35 flag = -1; 36 else 37 if(((Word*)t)->is_number() == 1) 38 flag = 1; 39 else 40 retfail; 33 41 34 if (flag || t->get_type() == type_short_int) 42 43 if (t->get_type() == type_short_int) 35 44 t++; 36 45 … … 53 62 } 54 63 } 55 #if 056 64 else 57 if (t->get_type() == type_word && ((Word*)t)->is_number()) 58 if (len > UINTPTR_MAX - длина слова )) 59 RF_LIB_ERROR("Argument too large for conversion"); 60 else 61 len += ((Word*)t)->get_len(); 62 #endif 65 if (t->get_type() == type_word){ 66 size_t word_len = ((Word*)t)->get_len(); 67 if (len > UINTPTR_MAX - word_len) 68 RF_LIB_ERROR("Argument too large for conversion"); 69 else 70 len += word_len; 71 } 63 72 else 64 73 retfail; … … 69 78 70 79 s_Int = ShortInt::create_expr(e_Exp, flag); 71 80 72 81 RF_END 73 82 }
Note: See TracChangeset
for help on using the changeset viewer.