Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15
bc
bc-1.06-dc_ibase.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bc-1.06-dc_ibase.patch of Package bc
Index: dc/numeric.c =================================================================== --- dc/numeric.c.orig +++ dc/numeric.c @@ -307,6 +307,8 @@ dc_getnum DC_DECLARG((input, ibase, read int digit; int decimal; int c; + int c_buff = 0; + int multi = 0; bc_init_num(&tmp); bc_init_num(&build); @@ -324,6 +326,9 @@ dc_getnum DC_DECLARG((input, ibase, read } while (isspace(c)) c = (*input)(); + c_buff = (*input)(); + if (isdigit(c_buff) || ('A' <= c_buff && c_buff <= 'F') || c_buff == '.') + multi = 1; for (;;){ if (isdigit(c)) digit = c - '0'; @@ -331,10 +336,15 @@ dc_getnum DC_DECLARG((input, ibase, read digit = 10 + c - 'A'; else break; - c = (*input)(); + digit = multi ? (digit >= ibase ? ibase -1 : digit) : digit; bc_int2num(&tmp, digit); bc_multiply(result, base, &result, 0); bc_add(result, tmp, &result, 0); + if (c_buff) { + c = c_buff; + c_buff = 0; + } else + c = (*input)(); } if (c == '.'){ bc_free_num(&build); @@ -343,13 +353,18 @@ dc_getnum DC_DECLARG((input, ibase, read build = bc_copy_num(_zero_); decimal = 0; for (;;){ - c = (*input)(); + if (c_buff) { + c = c_buff; + c_buff = 0; + } else + c = (*input)(); if (isdigit(c)) digit = c - '0'; else if ('A' <= c && c <= 'F') digit = 10 + c - 'A'; else break; + digit = digit >= ibase ? ibase -1 : digit; bc_int2num(&tmp, digit); bc_multiply(build, base, &build, 0); bc_add(build, tmp, &build, 0);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor