Four people found dead after abandoning baby on front lawn
Life inside Britain's 'poshest' migrant hotel: Asylum seekers enjoy breakfast buffet, four-poster beds, video games and alcohol
A Pill for Sleep Apnea Could Be on the Horizon
Read more of this story at Slashdot.
I have my Christmas presents wrapped and ready to go in July - here's how I did it
Myleene Klass recalls the horrifying moment Harvey Weinstein offered her a sex contract to make her famous and reveals her fear of being unable to escape his advances
Moment furious motorist blows up as he denies scratching car in alleged crash - while other driver insists they have 'matching' scratches
My daughter killed herself after her depression spiralled following a workplace injury at River Island - I blame the fashion firm
Essex dad’s warning after young son’s wobbly tooth leads to cancer diagnosis
Australia bans kids from signing up for YouTube accounts, angering Google
Australia will require Google to ensure that children aged under 16 cannot sign up for YouTube accounts.…
Boy with 'peculiar' wobbly tooth diagnosed with aggressive disease
CodeSOD: Going on a teDa
Carlos G found some C++ that caused him psychic harm, and wanted to know how it ended up that way. So he combed through the history. Let's retrace the path with him.
Here was the original code:
void parseExpiryDate (const char* expiryDate) { // expiryDate is in "YYMM" format int year, month; sscanf(expiryDate, "%2d%2d", &year, &month); //... }This code takes a string containing an expiry date, and parses it out. The sscanf function is given a format string describing two, two digit integers, and it stores those values into the year and month variables.
But oops! The expiry date is actually in a MMYY format. How on earth could we possibly fix this? It can't be as simple as just swapping the year and month variables in the sscanf call, can it? (It is.) No, it couldn't be that easy. (It is.) I can't imagine how we would solve this problem. (Just swap them!)
void parseExpiryDate(const char* expiryDate) { // expiryDate is in "YYMM" format but, in some part of the code, it is formatted to "MMYY" int year, month; char correctFormat[5]; correctFormat[0] = expiryDate[2]; correctFormat[1] = expiryDate[3]; correctFormat[2] = expiryDate[0]; correctFormat[3] = expiryDate[1]; correctFormat[4] = '\0'; sscanf(correctFormat, "%2d%2d", &year, &month); //... }There we go! That was easy! We just go, character by character, and shift the order around and copy it to a new string, so that we format it in YYMM.
The comment here is a wonderful attempt at CYA. By the time this function is called, the input is in MMYY, so that's the relevant piece of information to have in the comment. But the developer really truly believed that YYMM was the original input, and thus shifts blame for the original version of this function to "some part of the code" which is shifting the format around on them, thus justifying… this trainwreck.
Carlos replaced it with:
void parseExpiryDate (const char* expiryDate) { // expiryDate is in "MMYY" format int month, year; sscanf(expiryDate, "%2d%2d", &month, &year); //... } .comment { border: none; }Grief-stricken face of banker whose Blackstone executive wife was murdered in NYC mass-shooting, leaving him a single dad of two
Lawless London: Knife crime offences in the capital nearly double in decade under Sadiq Khan - as report shows West End is becoming a hotspot of offending
India's One-Airline State
Read more of this story at Slashdot.
Princess Beatrice just stepped out in the most gorgeous floral skirt for summer - and we've found it on sale
Atlassian CEO Mike Cannon-Brookes sacks workers and replaces them with AI - as second major Aussie company chooses robots over humans
When the Rugby world travelled to Windsor Castle: How the royals' appearance on Mike Tindall's podcast 'humanised' the family
Britain's 50 biggest savers will earn £3MILLION EACH in interest alone
IKEA customers claim they were 'stuck in car park for hours' after Harlow store opening
Clouds and submarine cables report no impact from sixth-largest earthquake in recorded history, subsequent tsunami
A vastly powerful earthquake that radiated out from the eastern Russian coast on Wednesday has caused a significant tsunami but hasn’t disrupted communications or cloud computing services.…