Compilador mostrando o símbolo 'pi' em caso de erro

103

Eu estava testando um código no Coliru e recebi um resultado estranho. Desci o código e pude reproduzi-lo com este simples trecho de código :

int main()
{
    π
}

A saída em g ++:

saída em g ++

clang:

saída no clang

Por exemplo, usar apenas pi(sem o endereço de) mostra o resultado esperado:

main.cpp:3:5: error: 'pi' was not declared in this scope
    pi;
    ^

Tentei reproduzir isso na minha máquina, usando g ++ 4.9.2 e em outros sites, mas não consegui.

É algum bug neste site, alguma configuração desses compiladores?

E por que apenas usar o operador address-of ( &) mostra esse símbolo?

hlscalon
fonte
23
O que acontece se você colocar &tm;? Você consegue ™ aparecendo? Nesse caso, sua saída está sendo interpretada como HTML.
tadman
13
@tadman De acordo com este site ™ não possui um código de "nome" HTML, apenas um código numérico HTML: & # 8482; Isso dá a saída esperada .
simon
53
ahaha isso é hilário
Lightness Races in Orbit
4
@ Random832: Isso é o que obtenho por navegar no DOM em vez de visualizar a fonte. (╯°□°)╯︵ ┻━┻
Lightness Races in Orbit
3
Só para constar, várias pessoas que comentaram aqui conhecem o mantenedor do Coliru. Ele agora está ciente do problema. Obrigado por levantá-lo.
Lightness Races in Orbit

Respostas:

114

É um bug no site, pois a saída do compilador não é escapada corretamente. O compilador deve produzir π, mas isso é HTML válido, produzindo o símbolo pi que você vê.

Cachorro
fonte
podemos obter uma demonstração ao vivo em algum lugar como o coliru para mostrar isso? : P
thecoshman
9
E muitas vezes a fuga esquecida acaba se tornando um problema de segurança. Portanto, sempre que alguém se depara com isso, é educado notificar o administrador do site sobre isso.
Kasperd
50

πé o código html para π. Parece que alguém se esqueceu de escapar das coisas corretamente.


fonte
8
700 e um distintivo de ouro. O que é realmente desagradável é que esse cara poderia ter usado isso muito mais do que eu,
Cachorro
3
@DavidRicherby - o representante é superestimado e não coloca comida na mesa.
dtech