Skip to content

Instantly share code, notes, and snippets.

@Lovesan
Lovesan / unwind.lisp
Created June 6, 2019 21:45
SBCL code for testing cross-boundary exceptions
(sb-alien:load-shared-object "unwind.dll")
(sb-alien:define-alien-routine
("catches_fn" catches-fn)
sb-alien:void
(fn (* T)))
(defun sap-to-callable (ptr)
(sb-alien:sap-alien
(sb-alien:alien-sap ptr)
@Lovesan
Lovesan / unwind.cxx
Created June 6, 2019 21:45
A library which throws cross-boundary exceptions
// g++ -O0 -shared -o unwind.dll unwind.cxx
// OR
// cl.exe /nologo /Od /MD /EHa /LD /Fe:unwind.dll unwind.cxx
#include <iostream>
#include <exception>
#include <windows.h>
class Foo
{
public:
@Lovesan
Lovesan / sehtest.lisp
Created June 6, 2019 15:39
SBCL test for SEH-utilizing C++ or .NET library
(sb-alien:load-shared-object "sehlib.dll")
(sb-alien:define-alien-routine
("catches_fn" catches-fn)
sb-alien:void)
(defun test-seh ()
(handler-case
(progn (catches-fn)
(format *error-output*
@Lovesan
Lovesan / sehlib_net.cxx
Created June 6, 2019 15:38
Example .NET library which internally throws an exception and catches it
// cl.exe /nologo /clr /Od /MD /EHac /LD /Fe:sehlib.dll sehlib_net.cxx
using namespace System;
#include <iostream>
void throws_fn()
{
std::cerr << ".NET throws exception" << std::endl;
throw gcnew Exception();
}
@Lovesan
Lovesan / sehlib.cxx
Created June 6, 2019 15:37
Example C++ library which internally throws an exception and catches it
// g++ -O0 -shared -o sehlib.dll sehlib.cxx
// OR
// cl.exe /nologo /Od /MD /EHac /LD /Fe:sehlib.dll sehlib.cxx
#include <iostream>
#include <exception>
void throws_fn()
{
std::cerr << "C++ throws exception" << std::endl;
throw std::exception();
@Lovesan
Lovesan / get-commits.sh
Created March 19, 2019 15:12
Get your commits for a repo
#!/bin/bash
set -e
DATE_START=`date +%Y-%m-01`
DATE_END=`date +%Y-%m-%d`
USER_NAME=`git config user.name`
REPO_DIR=`realpath ./`
BRANCH_NAME='origin/master'
if [ -t 0 -a -t 1 ]; then
@Lovesan
Lovesan / ComUtils.hpp
Created April 21, 2017 16:28
COM utils
#ifndef __COM_UTILS_HPP__
#define __COM_UTILS_HPP__
#include <oleidl.h>
template<class T>
class ComPtr
{
public:
ComPtr()
@Lovesan
Lovesan / ffexample.c
Last active June 6, 2020 07:13
FFmpeg-based console audio/video player (e.g. ffplay analogue)
// build like e.g.
// cl.exe /nologo /O2 /I../ffmpeg-3.2.2-win64-lgpl/include /I../SDL2-2.0.5/include /MT ffexample.c SDL2.lib avcodec.lib avdevice.lib avformat.lib avutil.lib swresample.lib swscale.lib /link /libpath:../SDL2-2.0.5/lib/x64 /libpath:../ffmpeg-3.2.2-win64-lgpl/lib
#define __STDC_CONSTANT_MACROS
#ifndef UNICODE
#define UNICODE
#endif
#ifndef _UNICODE
#define __STDC_CONSTANT_MACROS
#include <stdint.h>
#include <inttypes.h>
#include <windows.h>
#include <stdio.h>
#ifdef __cplusplus
extern "C"
{
@Lovesan
Lovesan / fftutorial.cs
Created February 3, 2017 23:32
FFmpeg & SDL2 - play audio & video
#define __STDC_CONSTANT_MACROS
#include <stdint.h>
#include <inttypes.h>
#include <windows.h>
#include <stdio.h>
extern "C"
{
#include <libavfilter/avfilter.h>