Order of parameter evaluation in C++

The low-level details of how data gets passed into a function are often overlooked by programmers. We obviously care about passing by value vs. reference, and perhaps also by copy vs. move, but it’s easy to ignore anything deeper than that.

With C++ in particular, this can cause an unexpected problem regarding the order in which things actually happen. In this post, we’ll look at what can go wrong, and how to deal with it.
Read more ›

Posted in Programming Tagged with:

MFC prevents bad_alloc from being thrown

According to the C++ standard, the new operator should throw std::bad_alloc if it fails. This will typically happen if your process has run out of memory. However, this isn’t the case if your program uses the (rather outdated) Microsoft Foundation Classes. In this post, we’ll look at what’s going on, and what you can do about it.
Read more ›

Posted in Programming Tagged with: , ,

Make uPlay work better

I usually buy PC games through Steam, but occasionally I end up getting a game which requires Ubisoft’s uPlay to run. This can include franchises such as Far Cry, Assassin’s Creed, and Splinter Cell. Unfortunately, uPlay has some major issues causing it to crash regularly, making it impossible to play some games. I’ve got a few¬†quick tips here which seem to solve the issues for me. Read more ›

Posted in Games, Software Tagged with: ,

Convert a number to a binary string (and back) in C++

Sometimes it’s useful to output the binary representation of a number in text, i.e. as an ASCII string of 0’s and 1’s. There are also situations where you might want convert back the other way, e.g. if you want to let a user enter a binary string manually. The bitset class in C++ makes this surprisingly quick and easy.
Read more ›

Posted in Programming Tagged with:

Prevent Word from putting page breaks in table rows

If you’re using large tables in Word, you may sometimes find that they run across more than one page. Quite often, the page break occurs inside a row, which means the row gets split across two pages. To the person reading it, this can potentially make it look like two separate rows, which is frustrating.

The usual “Keep lines together” paragraph options don’t prevent this. You need to set the table properties instead.
Read more ›

Posted in General Tagged with: ,

Changing the emulation mode of the Microsoft Web Browser ActiveX control

I’ve been working on an MFC project which embeds a basic web-browser component in a dialog, in the form of a Microsoft Web Browser ActiveX component. (I know… these are ancient technologies… but sometimes you’ve got to work with what’s available on a project!)

Technically, the control hooks into whatever version of Internet Explorer (IE) you’re running on the system. However, it always seemed to fall-back on IE7 emulation mode for us, meaning a lot of our modern standards-compliant HTML wouldn’t work properly. Thankfully, there is a way to fix this problem, although it’s far from obvious!

Read more ›

Posted in Programming Tagged with: , , , ,


Avid Insight is my personal blog about various software, programming, electronics, and occasionally academic things. I also have a few past projects linked in the navigation menu above, so feel free to look around!