The Old New Thing
Practical development throughout the evolution of Windows.
Latest posts

Making sure the Microsoft Visual C++ compiler chooses the right source encoding

Making sure the file and settings are set correctly.

How various git diff viewers represent file encoding changes in pull requests

The invisible UTF-8 BOM, and sometimes invisible encoding changes.

In C++, failure to meet the requirements does not always mean that you fail if you don’t meet the requirements

Combining SFINAE/requires, standard layout, and overload resolution.

Why are Win32 resources strings bundled at all? And why bundles of 16?

Balancing multiple performance factors.

How can I check if two GUIDs are equal when they are provided as strings?

A customer asked if there was a helper function in the system that accepted two strings and reported whether the s they represent are equal. This is a tricky question, because you first have to decide what "represent" means. There are many ways of representing a as a string. It could be just 32 case-insensitive hexadecimal digits. Or maybe there are internal hyphens to separate the groups. And the whole thing might be enclosed in braces or parentheses. External and interior whitespace might be allowed. Trailing garbage might be accepted (and ignored). And then there's the special format {0x00000000,0x0000,0x00...

A design flaw in the Windows 3D Pipes screen saver pointed out by a customer

Time-wasting.

A common proposed solution to certain categories of IFNDR: Getting the linker to verify identical functions

You could do it, but it could cramp your style.

How do I register a file type for a scripting language so that users get a warning when they run an untrusted script?

Use the FTA_AlwaysUnsafe edit flag.

Inside STL: The atomic shared_ptr

There's a lock hiding inside the pointer.