The Old New Thing

Practical development throughout the evolution of Windows.

Latest posts

Why is there a bulge on my bicycle tire when I inflate it?
Jan 21, 2025
2
0

Why is there a bulge on my bicycle tire when I inflate it?

Raymond Chen
Raymond Chen

Get the order of operations right.

Why doesn’t the Windows blue screen of death prominently identify the company that created the driver that crashed?
Jan 21, 2025
0
1

Why doesn’t the Windows blue screen of death prominently identify the company that created the driver that crashed?

Raymond Chen
Raymond Chen

Because the driver that crashed may not be the one at fault.

Reminder: When a C++ object fails to construct, the destructor does not run
Jan 20, 2025
1
1

Reminder: When a C++ object fails to construct, the destructor does not run

Raymond Chen
Raymond Chen

If you need to run after a failed construction, you have to put it in a base class or member variable.

The case of the crash when trying to erase an element from a <CODE>std::set</CODE>
Jan 17, 2025
6
1

The case of the crash when trying to erase an element from a std::set

Raymond Chen
Raymond Chen

Another kind of fiasco.

In a C++ class template specialization, how can I call the unspecialized version of a method?
Jan 16, 2025
3
1

In a C++ class template specialization, how can I call the unspecialized version of a method?

Raymond Chen
Raymond Chen

You can't talk about things that might exist, so instead talk about things that do.

Microspeak: The walk-on topic
Jan 14, 2025
5
1

Microspeak: The walk-on topic

Raymond Chen
Raymond Chen

Just walk on in with your topic.

A simplified overview of ways to add or update elements in a <CODE>std::map</CODE>
Jan 13, 2025
4
2

A simplified overview of ways to add or update elements in a std::map

Raymond Chen
Raymond Chen

And using it to find missing opportunities.

Why does inadvertently passing a <CODE>std::string</CODE> instead of a <CODE>char const*</CODE> to a variadic function crash on x86-32 but not x86-64?
Jan 10, 2025
2
0

Why does inadvertently passing a std::string instead of a char const* to a variadic function crash on x86-32 but not x86-64?

Raymond Chen
Raymond Chen

Looking at the calling convention and the small string optimization.