So today is "make a terrible comic day"...

Hmm....

:blobcatthinking: Most terrible thing that I can draw

@vaporeon_ :

@wallhackio C++ rage comic where Vaporeon can't handle C++ sounds fun to draw

Send me some awful C++ constructs for inspiration

@vaporeon_ I don't know what this is doing but it looks evil:

const char* seed = "random seed";
RAND_seed(seed, sizeof(seed));

The following snippet which assigns to an rvalue, something you're not supposed to be able to do:

#include <iostream>
class A{};
int main() {
const A a;
std::cout << &(A() = a) << "\n";
}

using the ternary operator to conditionally change what variable is assigned to:

int main() {
int a;
int b;

// do stuff, also assign to a and b

(a < b ? a : b) = 3;
}

The following is actually valid C++ code:

https://www.google.com

Operator overloading lets you do plenty of absurdities. You could, for example, override <= such that it behaves like a "move assignment":

class A {
public:
int num;

A& operator<=(A& other) {
this->num = other.num;
return *this;
}
};

int main() {
A a;
A a2;

a.num = 1000;

a2 <= a; // move a's content to a2
};

There's certainly more but this is plenty of evil shit.

@wallhackio Is the RAND_seed thing:

const char* seed = "random seed";
RAND_seed(seed, sizeof(seed));

Is this similar to how you can cat > /dev/random and then write whatever bytes there to seed the randomness pool? NetBSD made me do that on a device that didn't have sufficient hardware to generate randomness on its own...

Though: I thought sizeof(seed) should just return sizeof(const char*) and not the length of the string. Unless this is some extremely cursed C++ thing...

@vaporeon_ you have already put more thought into that hack than i ever have by writing this comment

@wallhackio Where's that RAND_seed macro defined? Is it part of C++ itself or is it part of your code base?

Follow

@aescling @vaporeon_ forgive me for not knowing what i am talking about

Sign in to participate in the conversation
📟🐱 GlitchCat

A small, community‐oriented Mastodon‐compatible Fediverse (GlitchSoc) instance managed as a joint venture between the cat and KIBI families.